首页 > 解决方案 > 如果 r 函数因任何原因退出,如何保证它会返回一个对象?

问题描述

有一个对象必须由函数返回,无论它为何终止。

例如,当该功能运行时,我按下 Rstudio 右上角的红色按钮强制它终止。在这种情况下,函数也应该返回对象。

我记得有一个类似“on.exist”的函数,当一个函数存在时它会做一些事情。不记得了。

标签: r

解决方案


您不能on.exit用于该目的,但您可以只写出任何中间计算,以便如果函数停止,您仍然可以计算最后一个值。或者,您可以将其写入文件,在这种情况下,即使 R 或计算机崩溃,您也会拥有它。

# test function
f <- function() {
    for(i in 1:100) { 
      x <<- i
      Sys.sleep(10)
    }
    i
}

x <- NULL
x <- f()
# press red button before it finishes
x  # last value it calculated

推荐阅读