我有一个零向量,比如长度为10.所以
v = rep(0,10)
我希望根据v1中的一组索引和另一个实际上具有序列值的向量v2来填充向量的某些值。所以另一个向量v1的索引是
v1 = c(1,2,3,7,8,9)
和
v2 = c(0.1,0.3,0.4,0.5,0.1,0.9)
最后我想要
v = c(0.1,0.3,0.4,0,0,0,0.5,0.1,0.9,0)
因此v1中的索引从v2映射而剩下的那些是0.我显然可以写一个for循环,但由于实际矩阵的长度,这在R中占用太长时间。有什么简单的方法吗?
答案 0 :(得分:7)
您可以这样指定:
v[v1] = v2
例如:
> v = rep(0,10)
> v1 = c(1,2,3,7,8,9)
> v2 = c(0.1,0.3,0.4,0.5,0.1,0.9)
> v[v1] = v2
> v
[1] 0.1 0.3 0.4 0.0 0.0 0.0 0.5 0.1 0.9 0.0
答案 1 :(得分:3)
您也可以使用replace
v = rep(0,10)
v1 = c(1,2,3,7,8,9)
v2 = c(0.1,0.3,0.4,0.5,0.1,0.9)
replace(v, v1, v2)
[1] 0.1 0.3 0.4 0.0 0.0 0.0 0.5 0.1 0.9 0.0
有关详细信息,请参阅?replace
。