当前位置:  开发笔记 > 编程语言 > 正文

如何在R中停止一个耗时太长的函数并给它一个替代方案?

如何解决《如何在R中停止一个耗时太长的函数并给它一个替代方案?》经验,为你挑选了1个好方法。



1> 小智..:

R包R.utils的功能evalWithTimeout几乎与您所描述的完全相同.如果您不想安装软件包,则evalWithTimeout依赖于用户友好的R基本功能setTimeLimit

您的代码看起来像这样:

library(R.utils)

slow.func <- function(x){
  Sys.sleep(10)    
  return(x^2)
}

fast.func <- function(x){
  Sys.sleep(2) 
return(x*x)
}
interruptor = function(FUN,args, time.limit, ALTFUN){
  results <- NULL
  results <- evalWithTimeout({FUN(args)},timeout=time.limit,onTimeout="warning")
  if(results==NULL){
    results <- ALTFUN(args)
  }
  return(results)
}   
interruptor(slow.func,args=2,time.limit=3,fast.func)

推荐阅读
sx-March23
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有