2013-09-02 1 views
5

Я пытаюсь изменить матрицу в структуру, которую я могу использовать в функциях пакета recommenderlab.recenderlab, Ошибка в asMethod (object): недопустимый класс 'NA' to 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") 

Это результат:

Ошибка в asMethod (объект): недопустимый класс 'NA' в dup_mMatrix_as_geMatrix

Кто-нибудь есть идея о том, что происходит здесь не так?

+0

Вам необходимо отправить код, который позволит нам воспроизвести эту ошибку. Кажется, у вас есть объект datafile1, который вызывает ошибки, но мы не можем смотреть на указанный объект. –

+0

Благодарим вас за комментарий. Надеюсь, мое редактирование поможет. – rdatasculptor

ответ

14

Проблема заключается в том, что класс RealRatingMatrix расширяет Matrix и Matrix не реализовал матрицы с character s в них. Сначала конвертируйте matrix в numeric, а затем конвертируйте.

# 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

спасибо! Я полностью забыл об этом. Он работает сейчас. – rdatasculptor