0
我需要使用R从矩阵的每一列中选取前三个值,并将这些值填充到保持器(另一个矩阵)。R ::参数错误不是矩阵
虽然试图做到这一点,我得到一个错误:
Error in t.default(head(n = 3, rownames(trans.cosine[order(trans.cosine[, :
argument is not a matrix
这是R代码我使用:
recsys <- read.csv("H:/Recommender Systems/Recsys.csv")
recsys.ibs <- (recsys[,!(names(recsys) %in% c("NAME"))])
recsys.ibs.normalized <- normalize(recsys.ibs, byrow = FALSE)
n <- recsys$NAME
trans <- t(recsys.ibs.normalized)
colnames(trans) <- n
trans.cosine <- cosine(trans)
write.csv(trans.cosine, "H:/Recommender Systems/cosine_similarity.csv")
recsys.neighbours <- matrix(NA, nrow=ncol(trans.cosine),ncol=3,dimnames=list(colnames(trans.cosine)))
for(i in 1:ncol(trans.cosine))
{
recsys.neighbours[i,] <- (t(head(n=3,rownames(trans.cosine[order(trans.cosine[,i],decreasing=TRUE),][i]))))
}
我尽快得到的错误,因为我执行以上for循环。
我检查了矢量,他们是矩阵。但我仍然得到错误。
> class(trans.cosine)
[1] "matrix"
> class(recsys.neighbours)
[1] "matrix"
对此的任何帮助都会非常有用。
谢谢
检查表达式的每个RHS。这应该是显而易见的错误。 –
@TimBiegeleisen - 感谢您的建议。我正按照您的建议检查每个表达式,并在进入for循环之前将“trans.cosine”转换为数据框。它正在工作。再次感谢。 – Arun