这个问题已经让我困惑了几天。假设我有两个矩阵:
matrix_a <- matrix(0, nrow = 3, ncol = 3,
dimnames = list(c("r1", "r2", "r3"), c("c1", "c2", "c3")))
matrix_b <- matrix(c("r1", "r2", "c1", "c2"), nrow = 2, ncol = 2)
我想matrix_a
在一个函数中动态修改:
change_var <- function(x, matrix_a) {
if(any(rownames(matrix_a) == x[1]) && any(colnames(matrix_a) == x[2])) {
matrix_a[x[1], x[2]] <- 1
return (matrix_a)
}
}
apply(matrix_b, 1, change_var, matrix_a)
但是,似乎此代码根本无法更改matrix_a
。但我的预期结果matrix_a
应该是
c1 c2 c3
r1 1 0 0
r2 0 2 0
r3 0 0 0
我们如何才能实现动态修改的目标matrix_a
?请为我提供一个非循环解决方案。提前致谢。