我有一个零矩阵:
M <- matrix(0, nrow = 10, ncol = 5)
和索引向量
V <- c(1,5,3,2,3,4,1,3,2,4)
我想在 1:10 中将条目 M[i,V[i]]
替换为 1, i。如何在不使用暴力(for 循环)的情况下做到这一点?下面是使用暴力执行此操作的代码,这在更高维度上效率不高:
for(i in 1:10) M[i,V[i]] = 1
最佳答案
您可以从向量 V 中创建一个矩阵并直接使用它,即
M[matrix(c(seq_along(V), V), ncol = 2)] <- 1
关于根据索引向量替换矩阵列中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58658594/