如何将值分配给基于向量条件索引的矩阵中。一个工作的例子是:
# Input:
r <- c(2, 1, 3)
m <- matrix(rep(0, 9), nrow = 3)
# Desired output
result <- matrix(c(0, 1, 0,
1, 0, 0,
0, 1, 0), nrow = 3)
result.
# I try with this notation but it does not work:
sapply(1:3, function(x)m[x, r[x]] <- 1)
我们使用row/column
索引来分配
m[cbind(seq_len(nrow(m)), r)] <- 1
或使用replace
replace(m, cbind(seq_len(nrow(m)), r), 1)