日付フレームの各行について、この行の値を更新する必要がある列インデックスを示すベクトルがあります。
> set.seed(12008); n <- 10000; d <- data.frame(c1=1:n, c2=2*(1:n), c3=3*(1:n))
> i <- sample.int(3, n, replace=TRUE)
> head(d); head(i)
c1 c2 c3
1 1 2 3
2 2 4 6
3 3 6 9
4 4 8 12
5 5 10 15
6 6 12 18
[1] 3 2 2 3 2 1
これは、行1と4について、c3を更新する必要があることを意味します。行2、3、および5については、c2を更新する必要があります(とりわけ)。ベクトル化された演算を使用して、つまり、apply
友達なしでRでこれを達成するための最もクリーンな方法は何ですか?編集:そして、可能であれば、Rループなしで?
d
行列に変換してから、1次元ベクトルを使用して行列要素に対処することを考えました。しかし、行と列のインデックスから1次元アドレスを計算するためのクリーンな方法が見つかりませんでした。