python - if(interactive()) 是等同于 pythonic “if __name__ == ” __main_ _“: main()” 的 R 吗?

标签 python r

我希望 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 执行,只需在调用 之前调用 options(run.main=FALSE) >来源。如果您将脚本与 knitr 一起使用并且希望执行 main,请不要设置该选项,它将默认为 TRUE。或者,如果您不希望 main 与 knitr 一起运行,请在调用它之前调用 options(run.main=FALSE)

关于python - if(interactive()) 是等同于 pythonic “if __name__ == ” __main_ _“: main()” 的 R 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21383058/

相关文章:

r - facet_grid() 的奇怪行为

r - 修改部分可伸缩单元格的格式

python - Sympy函数评估

python - 避免在 Pandas 中使用科学记数法表示整数

python - PyParsing 中的简单递归下降

python - 如何将 JSON 树的每个分支转换为项目列表?

r - 有没有办法用 R 的 merge() 创建 Stata 的 _merge 指标变量?

r - 在向量中上下移动数字

r - 在 R Markdown 模板中包含图像,无需为模板创建新目录

python - 将单独的 python 包放入同一个命名空间?