我可以从 unix shell 启动 Rcmdr 会话吗?

Can I start an Rcmdr session from a unix shell?

我想从 bash(或任何 unix shell)作为命令启动 Rcmdr,也许作为别名。 R 接受 CMD 参数,我也可以用 <.我希望 R 控制台保持打开状态,并启动一个交互式 RCommander 会话(Rcmdr 是 R 的流行 GUI,对于任何阅读新手的人来说,看起来你启动 R,键入 library(Rcmdr) 然后是 Commander () 启动它)。

我知道如何将 Rcmdr 添加到我的配置文件中,如果我在我的 Linux 工作站上的 .Rprofile 中包含库 (Rcmdr),它似乎总是启动。

如果我用 < 管道输入我的输入,那么这个脚本会一直工作到它说 Commander GUI 仅在交互式会话中启动的地步:

library(Rcmdr);
Commander();

但是,如果我 运行 R CMD BATCH ./rcommander.r 它只是启动并立即关闭,可能会给我一些我没有看到的关于交互式会话的警告,因为 CMD BATCH 将 R 置于非-交互模式,因此对于 "injecting" Rcmdr 进入交互式 R 会话的目的是无用的。

在 R 中 "source a file on the command line but run interactively" 似乎是不可能的。似乎还有命令行选项可以忽略全局和用户配置文件,但不能指定像 R --profile-custom ./.Rprofile2[= 这样的自定义配置文件14=]

要么我想指定一个表示 "Right now I want to start up and use RCmdr" 的配置文件,但有时没有它仍然能够 运行 R。

在 Ubuntu 机器上工作,我能够使用德克在 this mailing list post 中提供的建议:

nathan@nathan-laptop:~/tmp$ cat rcommander.r 
#!/bin/bash 
r -lRcmdr -e'while(TRUE) Commander();'  


nathan@nathan-laptop:~/tmp$ cat rcommander2.r 
#!/bin/bash 
Rscript --default-packages=Rcmdr -e 'while(TRUE) Commander();'

第一个脚本使用 Dirk 的 littler 包,在 CRAN 上可用,第二个脚本使用标准的 Rscript 可执行文件。如前所述,您可以从终端使用 ctrl + c 终止进程。