gpt4 book ai didi

R坐标值对成稀疏矩阵

转载 作者:行者123 更新时间:2023-12-04 09:28:49 32 4
gpt4 key购买 nike

我在将我的数据集加载到 R 中的稀疏矩阵时遇到问题。我正在使用 Matrix 包。我拥有的数据采用 x y value 的形式。例如:

  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 x 5896 的矩阵,要输入 247158 个值,所以 for 循环是不可能的,除非我只是不耐烦。

我的问题是:在 R 中执行此操作的首选方法是什么?

更新:

我使用 sparseMatrix 解决了这个问题:

myMatrix = sparseMatrix(i = mydata[1:numrows,1], j = mydata[1:numrows,2],
x = mydata[1:numrows,3])

不理解另一个中的sparseMatrix 用法post

最佳答案

假设这是一个名为 dat 的数据框:

myMatrix = Matrix(0, nrow=10, ncol=10)
# Notice that you need to specify zero values to make it sparse.
myMatrix[cbind(dat$V1, dat$V2)] <- dat$V3
myMatrix
#--------------
10 x 10 sparse Matrix of class "dgCMatrix"

[1,] . 0.34 . . . . . . . .
[2,] . . . . . . . . . .
[3,] . . . . . . . . . .
[4,] . . . . 0.62 . . . . .
[5,] . . . . . . . . . .
[6,] . . . . . . . . . .
[7,] . . . 0.56 . . . . . .
[8,] . . . . . . . . . .
[9,] . . . . . . . . . .
[10,] . . . . . . . . . .

关于R坐标值对成稀疏矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15047070/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com