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 に答える