首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >作为stopifnot()的条件替换的No-op函数

作为stopifnot()的条件替换的No-op函数
EN

Stack Overflow用户
提问于 2012-06-07 22:16:44
回答 1查看 592关注 0票数 7

在R中是否有一个无操作的函数,使得即使参数的计算成本很高,它也会立即返回?我正在寻找stopifnot函数的条件替换。

代码语言:javascript
复制
> noop(runif(1e20))
# returns immediately and uses no memory
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-07 22:20:15

我认为这样做是可行的:

代码语言:javascript
复制
noop <- function(...) invisible(NULL)

因为懒惰的评估在这里得到了拯救:

代码语言:javascript
复制
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,也看不到运行时的增加。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10933671

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档