検索の数時間後、私はあなたの専門知識に目を向けます。 Rの初心者は、自分のコードをスピードアップしようとします。私の目標は、行列A
の値を置き換えることです。しかし、別の行列B
の2つのベクトルに基づいて値を置き換えたいとします。 B[, 1]
は、行列A
の行i
の名前です。第2列のB[, 2]
は、行列A
の列の名前に対応します。他のマトリックスでインデックスされた行列要素の置換
私のコードの最初のバージョンは、ループ内でmatch関数を使用することでした。
for(k in 1:L){
i <- B[k,1]
j <- B[k,2]
d <- match(i,rownames(A))
e <- match(j,colnames(A))
A[d, e] <- 0
}
番目のバージョンは、私は少しスピードを許可:
for(k in 1:L) {
A[match(B[k,1],rownames(A)), match(B[k,2],colnames(A))] <- 0
}
しかし、処理時間が長すぎる、長いです。だから私はapply
関数を使用すると思った。このためには、B
の各行ベクトルにapply
を使用する必要があります。
apply
は素晴らしい機能を使用していますか?または私は間違った方法で行っていますか?