我有一个数据框 Like ,用于n个用户和点赞,具有 userid 和 likeid1 : likeidm 作为我的变量。特定的用户ID存储在第1列( Likes $ userid )中,并且该单元格包含1或0,具体取决于用户是否喜欢具有各自的likeid的页面。
100
现在,我想创建一个稀疏矩阵。如何在以下代码中指定j?我知道这样做的方式是不对的,因为从技术上讲,id不在列中,但已经在数据框中指定为变量。
library(Matrix)
Likes <- data.frame(userid=c("n1","n2"),
m1=c(0,1),
m2=c(0,0),
m3=c(0,0),
m4=c(1,0)
)
Likes [1,1:5]
userid m1 m2 m3 m4
1 n1 0 0 0 1
预先感谢(并深表歉意)
答案 0 :(得分:2)
我试图通过构造一个像您在问题中描述的对象(现在已将其编辑到问题中)并在其上附加一些其他伪造的行来重现该问题。
++a
我发现在此运行您的代码引发了另一个错误:
instance Monoid (Star a) where
...
sparseMatrix中的错误(喜欢,i =喜欢$ userid,j = 1, c(2:ncol(Likes)),:必须完全缺少“ i”,“ j”或“ p”之一 通话中
我在评论中多次提到此问题,因为我认为是造成此问题的原因。您更正了library(Matrix)
Likes <- data.frame(userid=c("n1","n2"),
m1=c(0,1),
m2=c(0,0),
m3=c(0,0),
m4=c(1,0)
)
参数的规范,现在它可以工作了:)
您在有关列名称的注释中还询问了一个后续问题。我认为这应该可以解决:
sM_Likes <- sparseMatrix(Likes, i=likes$userid, j=1,c(2:ncol(Likes)), x=1)