R填充矢量

时间:2012-11-12 18:47:51

标签: r vector operations

我有一个零向量,比如长度为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中占用太长时间。有什么简单的方法吗?

2 个答案:

答案 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