recommenderlab, Error in asMethod(object) : invalid class 'NA' to dup_mMatrix_as_geMatrix

女生的网名这么多〃 提交于 2019-12-01 02:25:43

问题


I am trying to change matrix into a structure that I can use in functions of the recommenderlab package.

datafile1 <- as(datafile1,"matrix")
datafile1
     name1 name2 rating1 rating2 rating3 rating4 rating5 rating6
[1,] "1"   "a"   "0"     "0"     "1"     "0"     "0"     "0"    
[2,] "2"   "d"   "0"     "0"     "1"     "0"     "0"     "0"    
[3,] "3"   "x"   "1"     "0"     "1"     "0"     "0"     "0"    
[4,] "4"   "b"   "0"     "1"     "1"     "0"     "0"     "0"  

library(recommenderlab)
datafile1 <- as(datafile1, "realRatingMatrix")

This is the result:

Error in asMethod(object) : invalid class 'NA' to dup_mMatrix_as_geMatrix

Does anyone have an idea about what's going wrong here?


回答1:


The problem is that the RealRatingMatrix class extends Matrix, and Matrix has not implemented matrices with characters in them. Convert your matrix to a numeric first, then convert.

# Recreate data
datafile1<-read.table(textConnection('
name1 name2 rating1 rating2 rating3 rating4 rating5 rating6
"1"   "a"   "0"     "0"     "1"     "0"     "0"     "0"    
"2"   "d"   "0"     "0"     "1"     "0"     "0"     "0"    
"3"   "x"   "1"     "0"     "1"     "0"     "0"     "0"    
"4"   "b"   "0"     "1"     "1"     "0"     "0"     "0"  
'),header=TRUE)
datafile1<-as.matrix(datafile1)

# Convert to numeric (by arbitrarily map the characters to numbers.)
datafile1<-sapply(data.frame(datafile1),as.numeric)

# Create real rating matrix
as(datafile1, "realRatingMatrix")
# 4 x 8 rating matrix of class ‘realRatingMatrix’ with 32 ratings.


来源:https://stackoverflow.com/questions/18580506/recommenderlab-error-in-asmethodobject-invalid-class-na-to-dup-mmatrix-as

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!