2013-09-02 31 views
5

Tôi đang cố gắng thay đổi ma trận thành cấu trúc mà tôi có thể sử dụng trong các chức năng của gói recommenderlab.recommenderlab, Lỗi trong asMethod (đối tượng): lớp không hợp lệ 'NA' thành 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") 

Đây là kết quả:

Lỗi trong asMethod (object): không hợp lệ lớp 'NA' để dup_mMatrix_as_geMatrix

Có ai có một ý tưởng về những gì đang xảy ra sai ở đây?

+0

Bạn cần đăng mã cho phép chúng tôi tạo lại lỗi này. Bạn dường như có một đối tượng datafile1 đó là ném lỗi nhưng chúng tôi không có cách nào để nhìn vào đối tượng nói. –

+0

cảm ơn bạn đã bình luận của bạn. Tôi hy vọng bản chỉnh sửa của tôi sẽ hữu ích. – rdatasculptor

Trả lời

14

Vấn đề là lớp RealRatingMatrix kéo dài MatrixMatrix chưa triển khai ma trận với character giây trong đó. Trước tiên, hãy chuyển đổi matrix thành số numeric, sau đó chuyển đổi.

# 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

cảm ơn! Tôi hoàn toàn bỏ qua sự thật đó. Nó hoạt dộng bây giờ. – rdatasculptor