1
は例です:(L、S)適用ファミリを使用してRでこのネストループを最適化するにはどうすればよいですか?ここ
result <- array(1, c(7,7,7))
for(i in 1:7){
for(j in 1:7){
for(k in 1:7){
result[i,j,k] <- i*j*k
}
}
}
は例です:(L、S)適用ファミリを使用してRでこのネストループを最適化するにはどうすればよいですか?ここ
result <- array(1, c(7,7,7))
for(i in 1:7){
for(j in 1:7){
for(k in 1:7){
result[i,j,k] <- i*j*k
}
}
}
を使用することができます。これは `外使用することができ、このたとえばouter
> 1:7 %o% 1:7 %o% 1:7
> identical(result, 1:7 %o% 1:7 %o% 1:7)
library("microbenchmark")
> microbenchmark(1:7 %o% 1:7 %o% 1:7, forloop = for(i in 1:7){
+ for(j in 1:7){
+ for(k in 1:7){
+ result[i,j,k] <- i*j*k
+ }
+ }
+ })
Unit: microseconds
expr min lq mean median uq max neval
1:7 %o% 1:7 %o% 1:7 19.673 21.3000 30.54441 26.030 30.4610 269.072 100
forloop 680.274 693.1025 730.68298 703.042 716.6775 1367.285 100
たぶん、あなたはあなたがループよりもはるかに高速である%o%
を使用することができ、この
result <- array(apply(expand.grid(1:7,1:7,1:7),1,prod),c(7,7,7))
を使用するのと同じである(:7,1:外側(1 7)、1:7)' "結果" を取得します。 「結果」を埋める実際の計算は何ですか? –
あなたは働く人々のためにいくつかのデータを提供する必要があります。 – gung
実際の値は別のデータフレームです。私はインデックスとしてi、j、kを使ってこのデータフレームと呼んでいます。 –