【问题标题】:Running R via terminal in Windows and leaving R session open在 Windows 中通过终端运行 R 并打开 R 会话
【发布时间】:2018-02-04 07:12:37
【问题描述】:

假设我有一个名为test.R 的R 脚本,存储在C:\,内容如下:

x <- "Hello Stackoverflowers"
print(x)

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

Rscript C:\test.R

正如预期的那样,结果将是:

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

例如,当使用python.exe 编译Python 代码时,我可以通过将-i 参数传递给python.execall 来轻松完成类似的事情。

我怎么能用 R 做到这一点?

【问题讨论】:

  • 目的是什么?为什么不打开会话并调用脚本呢?
  • @cderv 因为我正在通过其他软件自动调用 R 脚本。
  • 你不应该需要在 rscript 调用之后让 R 会话仍然打开。我不确定你为什么想要那个。您当前的解决方案是从其他软件调用 R 脚本
  • @cderv 我正在我的应用程序中实现一个简单的 R IDE。此外,这对于更多用途是必需的,例如在 Sublime 中有一个 R 控制台等。

标签: r windows console rscript


【解决方案1】:

将此添加到您的 .Rprofile:

STARTUP_FILE <- Sys.getenv("STARTUP_FILE")
if (file.exsts(STARTUP_FILE)) source(STARTUP_FILE) 

然后在 R 之外设置指示的环境变量,然后运行 ​​R。例如从 Windows cmd 行:

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

变体

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

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

在这种情况下,如果 R 在该目录中启动,R 只会运行 test.R。

【讨论】:

  • 感谢您的回答。但是,该解决方案的问题在于它需要对每个文件进行此类修改。我应该指定我需要它在不这样做的情况下工作。我将使用有关我的用例的更多详细信息更新问题。
  • 不是这样。只需设置环境变量,然后启动 R 或编写一个简单的批处理文件即可。例如(set STARTUP_FILE=C:\test.R) &amp;&amp; R 或者如果您的批处理文件名为 myR.bat 然后运行 ​​myR C:\test.R
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-20
  • 1970-01-01
  • 1970-01-01
  • 2021-12-09
相关资源
最近更新 更多