2015-02-10 1173 views
2

我已经将数据帧转换为稀疏矩阵,以避免内存问题并节省空间,一旦原始数据不适合内存。将稀疏矩阵(dgCMatrix)转换为realRatingMatrix

现在,我需要这个稀疏矩阵转换为realratingmatrix这样我就可以建立与recommenderlab的推荐,但我得到了以下错误:

Error in as(aux_max, "realRatingMatrix") : 
    no method or default for coercing “dgCMatrix” to “realRatingMatrix” 

我的示例代码如下:

library(Matrix) 
UserID<-c(10090,10090,10090,10316,10316) 
MovieID <-c(63155,63530,63544,63155,63545) 
Rating <-c(2,2,1,2,1) 
trainingData<-data.frame(UserIDa,MovieID,Rating) 

UIMatrix <- sparseMatrix(i = as.integer(as.factor(trainingData$UserID)), 
         j = as.integer(as.factor(trainingData$MovieID)), 
         x = trainingData$Rating 
         ) 

dimnames(UIMatrix) <- list(sort(unique(trainingData$UserID)), 
          sort(unique(trainingData$MovieID))) 

rrm <- as(UIMatrix, "realRatingMatrix") 

任何人都可以提供一些建议如何解决?

回答

2

嗯,我想我得到了答案。 我强制将“dgCMatrix”改为“矩阵”,然后改为“realratingmatrix”。 似乎工作正常。

rrm<- as( as(UIMatrix, "matrix") , "realRatingMatrix") 
+0

此解决方案不是正确无误的。实际上,这种方法会将dgCMatrix强制转换为矩阵,然后重新转换矩阵,但会填充不正确的“0”的空单元格。 – Nelson 2015-02-12 17:42:03

+0

Te解决方案是:datamat_2 <-new(“realRatingMatrix”,data = datamat)。有一个链接:http://www.inside-r.org/packages/cran/recommenderlab/docs/colSds – Nelson 2015-02-12 17:43:19