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.site
的system
命令(同上来自主目录中的.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、Rmarkdown、Shiny)