【发布时间】:2018-12-14 12:41:07
【问题描述】:
我有一个数据框 Likes 用于 n 个用户和 m 个喜欢,带有 userid 和 likeid1 :likeidm作为我的变量。特定的用户 ID 存储在第 1 列 (Likes$userid) 中,单元格包含 1 或 0,具体取决于用户是否喜欢具有相应 likeid 的页面。
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
现在,我想创建一个稀疏矩阵。我将如何在以下代码中指定 j ?我知道我这样做的方式不对,因为从技术上讲,id 不在列中,但已在我的数据框中指定为变量。
sM_Likes <- sparseMatrix(Likes, i=likes$userid, j=1,c(2:ncol(Likes)), x=1)
在此先感谢(并对这个非常基本的问题表示歉意)。
【问题讨论】:
-
欢迎来到 StackOverflow!对于 r 标签中的第一次问题,这是一个不错的尝试。但是,对于代码调试,请始终根据 MCVE 和
r标签描述询问 reproducible 代码/数据,并提供所需的输出。您可能希望根据标签描述使用dput()进行分享。这是一种重现 R 数据的简单方法。您可以将凌乱的dput(data_frame_name)或dput(head(data_frame_name))输出放在问题的底部(点击编辑)。 -
看看这个问题是否有用:stackoverflow.com/questions/29479198/…
-
@Hack-R 感谢有关可重现代码的提示,我会尝试的。关于帖子中的解决方案(感谢 dmi3kno 的分享)我觉得这只回答了第一个问题(即我应该事先创建一个没有第一列的数据框)而不是第二个问题,还是我弄错了?
-
谢谢。所以第二个问题是“我如何在下面的代码中指定 j?我”对吗?因为我认为问题的一部分是你应该只指定 3 个参数中的 2 个,我认为你已经指定了所有 3 个。
-
@Hack-R 我并不是要低估你的努力;)我的意思是我解决了这个问题,我创建了一个新的 df(不像原来的帖子那样),就像他们做的一样在教程中(df 具有列 userid 和 likeid),然后是 sparseMatrix(i=df$user_row,j=df$like_row,x=1)。我创建了这个问题,因为我想知道是否也可以解决创建这样的 df(而不是“稀疏”我现有的宽 df)。如果你发现是否有办法:如果你分享这个会很棒,但是,不要着急,因为我现在可以继续使用新的 df。谢谢!!:)
标签: r matrix sparse-matrix