【发布时间】:2012-06-07 14:16:43
【问题描述】:
R 中是否有一个无操作函数,即使参数的评估成本很高,它也会立即返回?我正在寻找 stopifnot 函数的有条件替换。
> noop(runif(1e20))
# returns immediately and uses no memory
【问题讨论】:
R 中是否有一个无操作函数,即使参数的评估成本很高,它也会立即返回?我正在寻找 stopifnot 函数的有条件替换。
> noop(runif(1e20))
# returns immediately and uses no memory
【问题讨论】:
我认为这样可以:
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,也看不到运行时间增加。
【讨论】: