2013-09-02 5 views
5

Sto cercando di cambiare matrice in una struttura che posso utilizzare nelle funzioni del pacchetto recommenderlab.recommenderlab, Errore in asMethod (oggetto): classe non valida 'NA' in dup_mMatrix_as_geMatrix

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") 

questo è il risultato:

Error in asMethod (oggetto): classe non valido 'NA' per dup_mMatrix_as_geMatrix

Qualcuno ha un'idea di quello che sta andando male qui?

+0

È necessario inserire il codice che ci consente di riprodurre questo errore. Sembra che tu abbia un file di dati oggetto1 che genera errori, ma non abbiamo modo di guardare quell'oggetto. –

+0

grazie per il tuo commento. Spero che la mia modifica possa aiutarti. – rdatasculptor

risposta

14

Il problema è che la classe RealRatingMatrix estende Matrix e Matrix non ha implementato matrici con character s in esse. Converti il ​​tuo matrix in un numeric prima, quindi converti.

# 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. 
+0

grazie! Ho completamente trascurato questo fatto. Ora funziona. – rdatasculptor

Problemi correlati