【问题标题】:Plots working in R environment, but not through RScript绘图在 R 环境中工作,但不是通过 RScript
【发布时间】:2017-03-31 18:34:33
【问题描述】:

如果我从命令行运行,谁能解释为什么:

>R #So I'm in the R environment
>plot(cars)
>sessionInfo()

情节按预期生成,sessionInfo 的输出为:

> sessionInfo()
R version 3.2.3 (2015-12-10)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu precise (12.04.5 LTS)

locale:
 [1] LC_CTYPE=en_GB.UTF-8       LC_NUMERIC=C              
 [3] LC_TIME=en_GB.UTF-8        LC_COLLATE=en_GB.UTF-8    
 [5] LC_MONETARY=en_GB.UTF-8    LC_MESSAGES=en_GB.UTF-8   
 [7] LC_PAPER=en_GB.UTF-8       LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_GB.UTF-8 LC_IDENTIFICATION=C  

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base  

但是,当我将这两行代码放入一个名为 Test.R 的脚本中时,如下所示:

#!/usr/bin/Rscript
plot(cars)
sessionInfo()

并运行“Rscript Test.r”

没有产生任何情节,会话信息的输出是:

R version 3.2.3 (2015-12-10)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu precise (12.04.5 LTS)

locale:
 [1] LC_CTYPE=en_GB.UTF-8       LC_NUMERIC=C              
 [3] LC_TIME=en_GB.UTF-8        LC_COLLATE=en_GB.UTF-8    
 [5] LC_MONETARY=en_GB.UTF-8    LC_MESSAGES=en_GB.UTF-8   
 [7] LC_PAPER=en_GB.UTF-8       LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_GB.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  base   

两个 sessionInfo 看起来一样,我使用“-X”参数登录到我的终端,输入“xclock”会生成时钟图片,我之前使用 Rscript 生成绘图。当我阅读here 时,我还添加了一行“require(methods)”,这可能会有所帮助。如果有人可以就我可以做些什么来查明问题提供帮助,我将不胜感激。

编辑 1:对 Amit 评论的回复如下: 我实际上在 Mac 上使用 unix,我认为您的方法适用于 windows,所以我将命令稍微编辑为我认为应该的,但如果我做错了请告诉我。我这样做了:

$ /usr/bin/Rscript --vanilla --slave Test2.r 
Loading required package: methods
R version 3.2.3 (2015-12-10)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu precise (12.04.5 LTS)

locale:
 [1] LC_CTYPE=en_GB.UTF-8       LC_NUMERIC=C              
 [3] LC_TIME=en_GB.UTF-8        LC_COLLATE=en_GB.UTF-8    
 [5] LC_MONETARY=en_GB.UTF-8    LC_MESSAGES=en_GB.UTF-8   
 [7] LC_PAPER=en_GB.UTF-8       LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_GB.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] methods   stats     graphics  grDevices utils     datasets  base 

【问题讨论】:

  • Rscript 可能很不稳定。如果你去 cmd 并写:"C:\Program Files\R\R-3.2.2\bin\x64\R.exe" --vanilla --slave CMD BATCH "D:\PATH\FILE.R" 会发生什么(显然将 R 路径更改为你正在使用的版本并将路径/文件更改为你的?
  • 我已将输出作为评论包含在上面,我很抱歉,我收到一条错误消息,说我的回复帖子(即代码)太长,无法粘贴到此处。
  • 您仍在使用 Rscript... 使用 usr/bin/R,然后指定您到 Test2.r 的路径。你确定是.r 不是.R
  • 非常感谢,所以如果我输入 /usr/bin/R /path/to/Test2.r ;我刚刚得到: ARGUMENT 'path/to/Test2.R' ignored 然后 R 控制台/环境启动了吗?然后我将扩展名从“.r”更改为“.R”,同样的事情发生了吗?
  • 亲爱的@user1288515,您完全错误地假设 the_scripting_ 变体会以与 interactive 环境相同的方式打开(图形)绘图设备。它没有,并且记录在案。您可以打印到pdf()png()或...许多其他设备,方法是明确打开它们,就像你在回答中所做的那样。不多也不少,按记录和预期工作。

标签: r plot rscript


【解决方案1】:

如果我像这样直接打印到 PDF,我可以打印该图:

#!/bin/Rscript
require(methods)
pdf("cars.pdf")
plot(cars)
dev.off()

【讨论】:

  • 绝对不是/bin/Rscript。也许是/usr/bin/Rscript/usr/local/bin/Rscript
猜你喜欢
  • 1970-01-01
  • 2021-11-09
  • 1970-01-01
  • 2014-04-10
  • 2012-08-16
  • 2015-03-10
  • 2016-07-01
  • 1970-01-01
  • 2020-12-26
相关资源
最近更新 更多