我希望 R 脚本有一个在交互模式下执行的 main() 函数。但是 main() 函数不应在获取文件时执行。
There is already a question about this一个很好的答案建议使用 interactive() 函数。但是,这对我不起作用。我没有足够的声誉点来评论或回答那个问题。所以我在这里再次提出这个问题。
我在 script_1.r
中写了这个
if(interactive()){
your main code here
}
如果我使用 knitr 放弃 html 或 pdf 文档,则获取脚本。 if(interactive())
下的这段代码不会被执行。这对我有好处,这就是我想要的。
我的问题是,如果我在交互模式下从 script_2.r
source("script_1.r")
,它仍然会运行此 下的代码if(interactive())
部分。
最佳答案
获得所需控制的最佳方式是使用选项。
例如,'script.r' 看起来像这样:
main <- function() {
message('main!')
}
if (getOption('run.main', default=TRUE)) {
main()
}
如果您在交互模式下获取文件并且不希望 main
执行,只需在调用 之前调用
。如果您将脚本与 knitr 一起使用并且希望执行 options(run.main=FALSE)
>来源main
,请不要设置该选项,它将默认为 TRUE
。或者,如果您不希望 main 与 knitr 一起运行,请在调用它之前调用 options(run.main=FALSE)
。
关于python - if(interactive()) 是等同于 pythonic “if __name__ == ” __main_ _“: main()” 的 R 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21383058/