从向量替换R子集中的矩阵中的值

时间:2019-05-16 19:15:04

标签: r

我想基于存储在两个向量中的矩阵索引(一个用于x,另一个用于y)替换矩阵中的值。我前段时间做过,但是忘记了基于向量的子集语法。

假设我有这个矩阵和这2个数组:

m <- matrix(0,10,10)
x <- c(1,3,5)
y <- c(2,4,6)

我需要用其他值替换m [1,2],m [3,4],m [5,6],这种情况下的语法是什么?我尝试了m [x,y],但是没有用。

2 个答案:

答案 0 :(得分:1)

没有稀疏矩阵支持: 如果我们在值中包括z <- c(4.5,5.6,6.7)

for(i in 1:length(z)) m[x[i],y[i]] <- z[i]

如果您想应用解决方案,这就是我能想到的,

apply(data.frame(x=x,y=y,z=z),1,function(row) .GlobalEnv$m[row[1],row[2]] <- row[3])

答案 1 :(得分:1)

我记得当时是如何从向量子集中矩阵的语法是:

m[cbind(x,y)]