RStudio 不执行来自 Rprofile.site 的“系统”命令

Posted

技术标签:

【中文标题】RStudio 不执行来自 Rprofile.site 的“系统”命令【英文标题】:RStudio does not execute `system` commands from Rprofile.site 【发布时间】:2017-12-24 10:55:01 【问题描述】:

在 Ubuntu (16.04) 下使用 Rstudio(版本 1.0.143),如果我将 system("echo 'Hello world'") 添加到我的 /usr/lib/R/etc/Rprofile.site 文件中,我在启动时在 R studio 中没有显示 Hello world 消息。 如果我从终端启动 R,我会收到 Hello world 消息。

R studio 似乎忽略了来自Rprofile.sitesystem 命令(同上来自主目录中的.Rprofile 文件)

是否可以启用系统命令执行,或者是否有充分的理由避免这种行为?

【问题讨论】:

【参考方案1】:

简而言之,RStudio 根本不提供 Rprofile.site 文件。 (我用的是Ubuntu 17.04,自己编译R-3.4.1)

测试Rprofile.site

为了简单的问题,您可以在Rprofile.site 文件中使用x=1 而不是system("echo 'Hello world'")。然后你打开 RStudio:

> x
Error: object 'x' not found

这告诉您 RStudio 是忽略 Rprofile.site 中的 system() 命令还是 R Studio 忽略整个 Rprofile.site 文件。

测试system()

如果您发现您的 RStudio 使用的是Rprofile.site 文件。你可以试试system("echo haha > x")system2('echo', 'haha', stdout = T) -> x

这告诉您 RStudio 是否忽略了 system() 命令,或者您由于其他原因看不到该消息。

RStudio 所说的

最后见https://support.rstudio.com/hc/en-us/community/posts/200643758-Rprofile-site-

我们实际上并没有实现用于采购 Rprofile.site 的代码(R 会)

作者:Ian Pylvainen,RStudio, Inc. 支持工程师

【讨论】:

在我的配置中,Rstudio 似乎从 Rprofile.site 获取所有内容,但不是 system 命令。如果我在此文件中添加x=1,则该对象在 Rstudio 中很可用。 cat("Hello world") 也会打印消息。另请参阅this question,我们在其中破解 RStudio 窗口标题,以使用Rprofile.site 使其更具信息性。 这很有趣。你可以试试我添加的。 聪明的主意!实际上,x 文件是在带有system("echo haha > x") 的光盘上创建的。所以系统函数确实执行了,但输出在 RStudio R 控制台中不可见。我错过了这一点,因为我想执行的系统命令尝试操纵 RStudio 窗口标题,但在 Rprofile.site 中它是在 RStudio 窗口出现之前执行的!但我找到了另一种方法。 恭喜您取得成功!

以上是关于RStudio 不执行来自 Rprofile.site 的“系统”命令的主要内容,如果未能解决你的问题,请参考以下文章

来自检查数据表中的行的 RStudio 闪亮列表

RStudio - 保存环境时的压缩

使用RStudio进行版本控制:如何比较和修改来自多个用户的文件

改变图形大小(Rstudio、Rmarkdown、Shiny)

与在 RStudio 中使用 saveRDS 相关的时间问题

在 RStudio / Interactive R 会话中因错误而停止执行