私は簡単な質問がありますが、良い解を見つけることができませんでした。だから、誰かが助けてくれることを願っています。行列の列を他の行列の列に追加する
行列Bの各列を、インデックスベクトルが指定されている行列Aの列に追加したいと考えています。ですから、Bの複数の列がAの同じ列に追加されている可能性があります。これらの変更を蓄積し、それらを置き換えたくありません。
これは、forループで実用的なソリューションです:
A <- matrix(0, ncol = 4, nrow = 4)
B <- matrix(c(1, 0, 0, 0, 2, 0, 1, 2, 0, 1, 1, 0), ncol = 3)
cols <- c(1, 2, 2)
for (i in seq_len(ncol(B))) {
A[, cols[i]] <- A[, cols[i]] + B[, i]
}
print(A)
私は
A <- matrix(0, ncol = 4, nrow = 4)
B <- matrix(c(1, 0, 0, 0, 2, 0, 1, 2, 0, 1, 1, 0), ncol = 3)
cols <- c(1, 2, 2)
A[, cols] <- A[, cols] + B
print(A)
を使用してforループせずにこれを書くことができる。しかし、これは同じ行列を返さない、ので、思いましたBの2番目の列をAの2番目の列に追加しますが、次の手順では、2番目の列をBの3番目の列に置き換えます。
私は高速で一般的なソリューションを探しています。これは、さまざまなインデックスベクトルと行列に対しても機能します。
を試してみてください? –
forループの後のAの値が望ましい結果です。しかし、私はより速くてきれいな解決策を探しています – needRhelp
あなたの質問をより明確にしようと、多分あなたはもっと助けを得ることができます.... – Thai