R中是否有类似Python的“if __name__ == "__main__": main()”的用法?
目标是有两种简单的方法来获取一些代码,比如说一个叫做 func.R 的文件,里面包含一个函数。使用 R CMD BATCH func.R
这个命令可以初始化这个函数并执行它。在一个会话中,输入 source("func.R")
就只是初始化这个函数而已。有没有什么好的想法?
6 个回答
5
你可以在R语言中传递参数,如果有参数的话就执行main()这个函数。关于参数的更多信息可以在这里找到:http://yangfeng.wordpress.com/2009/09/03/including-arguments-in-r-cmd-batch-mode/
47
另一种选择是:
#!/usr/bin/Rscript
# runs only when script is run by itself
if (sys.nframe() == 0){
# ... do main stuff
}
49
我觉得 interactive()
这个函数可能会有用。
这个函数在你以交互方式使用 R 的时候会返回 TRUE
,而在其他情况下则返回 FALSE
。所以你只需要用 if (interactive())
就可以了。
也就是说,它的意思是:
if (!interactive()) {
main()
}