R中是否存在无操作功能,即使参数评估成本昂贵,也会立即返回?我正在寻找条件替换stopifnot
函数。
> noop(runif(1e20))
# returns immediately and uses no memory
答案 0 :(得分:9)
我认为这样做:
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,也不会看到运行时增加。