Rのforステートメントは激しく遅いので有名です.この繰り返しをpython側でやっちゃったらどうなるかなっと
# R内で直接まわす
now = datetime.datetime.now()
robjects.r('nn <- 100000;for( ii in 1:nn ){ x <- 4}')
print datetime.datetime.now() - now# pythonでまわす ①
func = robjects.r('function(x) x <- 4')
now = datetime.datetime.now()
for ii in range(100000):
tmp = func(4.0)print datetime.datetime.now() - now
# pythonでまわす ②
func = robjects.r('func <- function(x) x <- 4')
print robjects.r.func
now = datetime.datetime.now()
for ii in range(100000):
tmp = robjects.r.func(4.0)print datetime.datetime.now() - now
>
うん、遅い.
たぶん、forステートメント自体はpythonのが早いんだろうけど、forの中身を評価するのにおそらく時間がかかっているのだろうと思う.
low-level interfaceを使用してforの中身の評価をすぐ始められるようにすればいいのかな.