替换每个数组元素的矩阵值

时间:2017-09-06 14:20:52

标签: arrays r matrix indexing

我有一个三维数组arr,其中每个数组元素都是一个具有相同行数和列数的矩阵。然后我有一个3列矩阵m,其中前两列指定索引(行和列),最后一列指定值。

arr = array(0, dim = c(2, 2, 3))
m = matrix(c(1, 2, -100, 2, 1, -99), ncol = 3, byrow = TRUE)
colnames(m) = c("row_index", "column_index", "value")

现在我想在每个数组元素的指定索引处填写此值。我找不到比下面几行代码更好的方法,但我更喜欢一种代码重复较少的解决方案。最好的方法是什么?

arr[, , 1][m[, 1:2]] = m[, 3]
arr[, , 2][m[, 1:2]] = m[, 3]
arr[, , 3][m[, 1:2]] = m[, 3]

1 个答案:

答案 0 :(得分:4)

这种适用方法如何:

arr[] <- apply(arr, 3, FUN = function(x) {x[m[,1:2]] <- m[,3]; x})

arr
# , , 1
# 
# [,1] [,2]
# [1,]    0 -100
# [2,]  -99    0
# 
# , , 2
# 
# [,1] [,2]
# [1,]    0 -100
# [2,]  -99    0
# 
# , , 3
# 
# [,1] [,2]
# [1,]    0 -100
# [2,]  -99    0