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 也看不到运行时间增加。