我无法将我的数据集加载到R中的稀疏矩阵中。我正在使用Matrix包。我的数据是x y value
。例如:将R坐标值对转换为稀疏矩阵
V1 V2 V3
1 2 .34
7 4 .56
4 5 .62
,我想要做的
myMatrix[1,2] = .34
myMatrix[7,4] = .56
myMatrix[4,5] = .62
相当于以自动化的方式。
我想要做的事,如:
myMatrix = Matrix(nrow=numrows, ncol=numcols)
myMatrix[mydata[1:numrows, 1], mydata[1:numrows, 2]] <- mydata[1:numrows, 3]
但是这使得我的矩阵lgeMatrix当我需要一个数字矩阵。
我也曾尝试:
myMatrix = Matrix(nrow=numrows, ncol=numcols)
for(i in 1:numrows){
myMatrix[mydata[i, 1], mydata[i, 2]] <- mydata[i, 3]
}
它创建一种矩阵我想要的,但需要的时间太长(超过5分钟)。我知道它是有效的,因为当我停止它时,我检查前几个值,它们是正确的,但最后的值是NA。我正在用一个7095到5896的矩阵,有247158个值,所以一个for循环是不可能的,除非我只是不耐烦。
我的问题是:在R中执行此操作的首选方法是什么?
更新:
我想通了使用sparseMatrix
代替:
myMatrix = sparseMatrix(i = mydata[1:numrows,1], j = mydata[1:numrows,2],
x = mydata[1:numrows,3])
不明白在其他post
这是SO发布一个改变你的问题? http://stackoverflow.com/questions/1274171/creating-and-accessing-a-sparse-matrix-in-r也就是说,尝试'库(Matrix)'然后'myMatrix < - sparseMatrix(V1,V2,x = V3)' – 2013-02-24 00:15:36
一种方法是包含在这个更一般的答案:http://stackoverflow.com/a/9617424/210673 – Aaron 2013-02-24 13:42:45