在Windows终端中运行R并保持R会话开启

3

假设我有一个名为test.R的R脚本,存储在C:\目录下,并包含以下内容:

x <- "Hello Stackoverflowers"
print(x)

若要通过终端运行它,只需调用:

Rscript C:\test.R

如预期,结果将是:

enter image description here

然而,我想知道是否有一种方法可以通过Windows控制台运行test.R,但之后保持在执行的R会话中而不是关闭并返回到控制台光标?也就是说,在上面的图像中,停留在R会话内而不是返回到C:\ R\R-3.4.1\bin>

例如,当使用python.exe编译Python代码时,我可以轻松地通过向python.exe调用传递-i参数来实现类似的事情。

我该如何在R中实现这个功能?


这是什么目的?为什么不打开一个会话并直接调用脚本呢? - cderv
@cderv 因为我正在通过其他软件自动调用 R 脚本。 - Louis15
你在调用rscript后不需要保持R会话仍然打开。我不确定为什么你想要那样做。你目前的解决方案是从其他软件调用R脚本。 - cderv
@cderv 我正在我的应用程序中实现一个简单的 R IDE。此外,这也是许多其他用途所必需的,比如在 Sublime 中拥有 R 控制台等。 - Louis15
1个回答

3
将以下内容添加到您的.Rprofile文件中:
STARTUP_FILE <- Sys.getenv("STARTUP_FILE")
if (file.exsts(STARTUP_FILE)) source(STARTUP_FILE) 

然后在R外部设置指定的环境变量,然后运行R。例如,从Windows命令行:

set STARTUP_FILE=C:\test.R
R
... R session ...
q()

变体

这有很多变体。例如,我们可以将.Rprofile文件的副本复制到特定目录(如~/test),然后向该副本添加以下代码:

source("~/test/test.R")

在这种情况下,只有当R在该目录下启动时,才会运行test.R文件。


感谢您的回答。然而,那种解决方案的问题在于它需要对每个文件进行这样的修改。我应该已经说明我需要它能够在不这样做的情况下工作。我将在问题中更新更多关于我的使用情况的细节。 - Louis15
不是这样的。只需设置环境变量,然后启动R或编写一个简单的批处理文件即可。例如:(set STARTUP_FILE=C:\test.R) && R 或者如果您的批处理文件名为myR.bat,则运行 myR C:\test.R - G. Grothendieck

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