1

Rの行列から選択した要素と巨大なベクトルを比較したい.

A は行列、B はベクトルです。B の各要素を A から選択した要素と比較したい。C と D は選択基準です。これらは B と同じ長さのベクトルです。C は A の行番号を指定し、D は列番号を指定します。A の次元は 10*100 で、B、C、D はすべて長さ 72000 のベクトルです。 for ループを使用したコード:

for ( j in 1:length(B) ){
  E[j] <- B[j] >= A[ C[j], D[j] ]
} 

これは遅すぎます。最初に A の要素を含むベクトルを定義して、これをベクトル化します。

A1 <- array(0, length(B))
A2 <- A[,D]
for ( j in 1:length(B) ){
  A1[j] <- A2[ C[j], j ]
}   
E <- B >= A1

これはまだ遅すぎます。これにもっと良い方法はありますか?

4

3 に答える 3