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
これはまだ遅すぎます。これにもっと良い方法はありますか?