r语言 - No-op 函数作为 stopifnot() 的条件替换



中是否有一个 no-op 函数,这样即使参数的计算成本很高,它也会立即返回?我正在寻找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 也看不到运行时增加。

最新更新