【发布时间】:2012-01-12 23:09:02
【问题描述】:
我有一个稀疏向量列表(在 R 中)。我需要将此列表转换为稀疏矩阵。 通过 for 循环执行此操作需要很长时间。
sm<-spMatrix(length(tc2),n.col)
for(i in 1:length(tc2)){
sm[i,]<-(tc2[i])[[1]];
}
有没有更好的办法?
【问题讨论】:
-
我可以回答,但需要更多指导。这些向量是否以任何稀疏格式存储?例如。您是将
tc2[[1]]存储为具有很多0 的数字向量,还是使用稀疏矩阵来表示每个向量?你能举一个数据的例子吗? -
@DAF -- 我的回答是否解决了您的问题?如果是这样,您可以通过单击其左侧的复选标记来接受它。如果没有,您能否添加一个您想要在稀疏矩阵中组合的稀疏向量类型的示例?干杯。
-
@iterator - 我可以退后一步,从“itemset”列表开始,即每个条目都是数字列表,表示行中出现的项目/单词。我想要这个数据的稀疏矩阵表示。 Josh 的解决方案适用于小示例,但在具有 10K 行和 10k 项的示例上,我的内存不足(16 G)
-
@DAF -- 如果我有这些数据,我可能会将其设置为
sparseMatrix()构造函数的输入。您将需要三个向量(可能组织为数据框的列),它们表示每个条目的行索引、列索引和值。运行这个玩具示例,看看它是如何工作的,然后告诉我这是怎么回事:sparseMatrix(i=1:4, j=4:1, x=c(2,4,5,9))。祝你好运! -
@Josh - 谢谢!这似乎是最有效的解决方案。我在下面发布了一个功能。
标签: r sparse-matrix