3

次のように2つの数値ベクトルを定義します。

> x <- c(1,2)
> y <- c(1,2)

ここで、たとえば、の要素の追加とそれらのインデックスに基づく2x2マトリックスを埋めたいxのでy、最終結果は次のようになります。

     [,1] [,2]
[1,]    2    3
[2,]    3    4

ネストされたforループでこれを実現するのは簡単ですが、非常に大きなデータセットでは実行されません。たとえば、これをベクトル化しようとしています

> z <- matrix(nrow=2, ncol=2)
> z[x,y] <- x + y

に割り当てる前に、演算子がベクトルとしてとを+追加するため、失敗します。インデックスで明示的な添え字を使用すると、同様に失敗します。xyzij

> i <- 1:2
> j <- 1:2
> z[i,j] <- x[i] + y[j]
> z
     [,1] [,2]
[1,]    2    2
[2,]    4    4

ベクトル化/添字を使用して目的を達成する方法はありますか、またはネストされたforループまたは適用関数の1つに制限されていますか?

4

1 に答える 1

4

多分あなたは機能を探していouter ますか?

outer(x,y,"+")

与える:

     [,1] [,2]
[1,]    2    3
[2,]    3    4
于 2013-02-26T15:18:23.307 に答える