デフォルトでは、SASはメモリよりも大きいモデルで動作することを理解していますが、biglmやffなどのパッケージを特に使用しない限り、Rには当てはまりません。
ただし、ベクトル化できるRで配列作業をしている場合は非常に高速です-場合によってはCプログラムの半分の速度ですが、ベクトル化できないことをしている場合は、スロー。例を挙げましょう:
# create a data.frame with 4 columns of standard normally distributed RVs
N <- 10000
# test 1
system.time( {df1 <- data.frame(h1=rnorm(N),
h2=rpois(N, lambda=5),
h3=runif(N),
h4=rexp(N))
} )
# about 0.003 seconds elapsed time
# vectorised sum of columns 1 to 4
# i.e. it can work on an entire column all at once
# test 2
system.time( { df1$rowtotal1 <- df1$h1 + df1$h2 + df1$h3 + df1$h4 })
# about 0.001 seconds elapsed time
# test 3
# another version of the vectorised sum
system.time( { df1$rowtotal2 <- rowSums(df1[,c(1:4)]) })
# about 0.001 seconds elapsed time
# test 4
# using a loop... THIS IS *VERY* SLOW AND GENERALLY A BAD IDEA!!! :-)
system.time( {
for(i in 1:nrow(df1)) {
df1$rowtotal3 <- df1[i,1]+ df1[i,2] + df1[i,3] + df1[i,4]
}
} )
# about 9.2 seconds elapsed time
Nを10倍から100,000倍に増やしたとき、20分後にテスト4をあきらめましたが、テスト1:3にはそれぞれ61、3 、および37 ミリ秒かかりました
N = 10,000,000の場合、テスト1:3の時間は3.3秒、0.6秒、および1.6秒です。
これはi7ラップトップで行われ、N = 1000万で480mbであったことに注意してください。メモリは問題ではありませんでした。
32ビットウィンドウを使用するユーザーの場合、メモリの量に関係なくRには1.5gbのメモリ制限がありますが、64ビットウィンドウまたは64ビットLinuxにはそのような制限はありません。最近のメモリは、1時間のコストと比較して非常に安いため、これを回避するために時間を費やすのではなく、メモリを追加購入するだけです。ただし、これはモデルがメモリに収まることを前提としています。