gpt4 book ai didi

r - 使用 R 中的索引矩阵更新矩阵

转载 作者:行者123 更新时间:2023-12-02 03:07:46 25 4
gpt4 key购买 nike

我有一个 5000 行和 4000 列的零矩阵。另外,我还有另一个 400,000 行 3 列的矩阵。第一列表示行索引,第二列表示列索引,最后一列是值。我想使用索引矩阵更新第一个矩阵。例如:

data <- matrix(0, 10, 7)

> data
[,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,] 0 0 0 0 0 0 0
[2,] 0 0 0 0 0 0 0
[3,] 0 0 0 0 0 0 0
[4,] 0 0 0 0 0 0 0
[5,] 0 0 0 0 0 0 0
[6,] 0 0 0 0 0 0 0
[7,] 0 0 0 0 0 0 0
[8,] 0 0 0 0 0 0 0
[9,] 0 0 0 0 0 0 0
[10,] 0 0 0 0 0 0 0

ind <- matrix(c(1, 2, 5,
2, 3, 6,
5, 7, 4,
5, 6, 16), ncol=3, byrow=T)

> ind
[,1] [,2] [,3]
[1,] 1 2 5
[2,] 2 3 6
[3,] 5 7 4
[4,] 5 6 16

我想在更新元素后得到以下矩阵:

> data
[,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,] 0 5 0 0 0 0 0
[2,] 0 0 6 0 0 0 0
[3,] 0 0 0 0 0 0 0
[4,] 0 0 0 0 0 0 0
[5,] 0 0 0 0 0 16 4
[6,] 0 0 0 0 0 0 0
[7,] 0 0 0 0 0 0 0
[8,] 0 0 0 0 0 0 0
[9,] 0 0 0 0 0 0 0
[10,] 0 0 0 0 0 0 0

解决我的大问题的最佳/有效的解决方案是什么?

最佳答案

由于您始终可以使用两列矩阵进行索引,因此您可以使用前两列作为完整索引,然后替换为第三列。

data[ind[, -3]] <- ind[, 3]

结果

data
# [,1] [,2] [,3] [,4] [,5] [,6] [,7]
# [1,] 0 5 0 0 0 0 0
# [2,] 0 0 6 0 0 0 0
# [3,] 0 0 0 0 0 0 0
# [4,] 0 0 0 0 0 0 0
# [5,] 0 0 0 0 0 16 4
# [6,] 0 0 0 0 0 0 0
# [7,] 0 0 0 0 0 0 0
# [8,] 0 0 0 0 0 0 0
# [9,] 0 0 0 0 0 0 0
#[10,] 0 0 0 0 0 0 0

关于r - 使用 R 中的索引矩阵更新矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32544312/

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