我有一个三维数组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]
答案 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