6

我有一个零向量,比如长度为 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 中花费了太长时间。有什么简单的方法可以做到这一点吗?

4

2 回答 2

8

你可以这样分配它:

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
于 2012-11-12T18:50:01.080 回答
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

于 2012-11-12T19:03:30.207 回答