如何测试R是否正在作为Rscript运行?

13
我有一个R文件中的代码,我想在RStudio中开发时能够使用源代码(即定义我的函数等),也可以使用命令行(实际上是使用Hadoop)的#! /usr/bin/env Rscript语法运行。对于后者,我需要Rscript执行的最后一件事是启动分析(即调用main()函数)。对于前者,我不希望调用我的main()函数。我想测试代码是否在Rscript内运行(或者在RStudio内运行),以便我可以执行main()或不执行。请问这可能吗?
如果要实现这个目标,一种解决方法是将代码拆分成多个文件,但如果可能的话(为了使Hadoop的东西稍微简单一些),我宁愿避免这样做。
先谢谢了!

谢谢提到RStudio - 直到现在我才知道这个软件程序,但我很高兴“发现”它。 - Jos
不用担心,Jura25。它的界面比Matlab或Mathematica要不成熟得多,但对于R来说非常有效。 - Chris
1个回答

14

您可以使用interactive来测试R是否在交互模式下运行。interactive将在Rscript下返回FALSE,在(大多数?)GUI下返回TRUE


谢谢Joshua。我简直不敢相信我没找到这个... - Chris
经过9年,我仍然觉得这很有用。顺便说一下,在Rstudio中使用interactive()即使在被源文件调用时也会返回TRUE。这是否符合预期? - Lazarus Thurston
@LazarusThurston:是的,这是预期的。RStudio是一个交互式控制台,所以即使你source()一个文件,它也会返回TRUE - Joshua Ulrich

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接