0

観測値 test_idxs を使用してディストリビューション testa を設定しています

test_idxs <- matrix(sample(c(1,2,3), 300000, repl=T), ncol=3)
testa_for_looped <- array(0, c(3,3,3))
testa_vectorized <- array(0, c(3,3,3))
system.time( for (i in 1:nrow(test_idxs)) { testa_for_looped[rbind(test_idxs[i,])] <- testa_for_looped[rbind(test_idxs[i,])] + 1 } )  ## slower
system.time( testa_vectorized[test_idxs] <- testa_vectorized[test_idxs] + 1  ) ### faster
sum(testa_for_looped) ### right
sum(testa_vectorized) ### wrong

ベクトル化されたソリューションは高速ですが、これはかなり壊れており、私が思いついたソリューションはすべて for ループよりも遅くなります。あなたならどうしますか?

4

0 に答える 0