7

Rにno-op関数があり、パラメーターの評価にコストがかかる場合でも、すぐに返されますか?関数の条件付き置換を探していstopifnotます。

> noop(runif(1e20))
# returns immediately and uses no memory
4

1 に答える 1

11

私はこれがうまくいくと思います:

noop <- function(...) invisible(NULL)

ここで遅延評価が助けになります:

R> system.time(replicate(1e4, noop(runif(1e2))))
   user  system elapsed 
   0.01    0.00    0.01 
R> system.time(replicate(1e4, noop(runif(1e5))))
   user  system elapsed 
   0.01    0.00    0.02 
R> system.time(replicate(1e4, noop(runif(1e8))))
   user  system elapsed 
   0.01    0.00    0.01 
R> system.time(replicate(1e4, noop(runif(1e11))))
   user  system elapsed 
   0.01    0.00    0.01 
R> 

したがって、Nを増やしても、実行時の増加は見られません。

于 2012-06-07T14:20:14.530 に答える