我正在更广泛的管道中使用R脚本,似乎不适用于某些版本的Rscript但与其他版本一起使用。由于无法连接到X11,调用失败,这是可以理解的,因为这是在服务器上。但我在本地安装Rscript能够处理这个问题吗?
我的本地安装版本是3.0.1,而报告此问题的其他用户的版本是3.0.2。
这是一个简单的测试用例 - 首先是.R文件:
#!/usr/bin/env Rscript
capabilities()
png("abc")
dev.off()
使用我的本地环境运行:
-bash-4.1$ ./test.R
jpeg png tiff tcltk X11 aqua http/ftp sockets
TRUE TRUE TRUE TRUE FALSE FALSE TRUE TRUE
libxml fifo cledit iconv NLS profmem cairo
TRUE TRUE FALSE TRUE TRUE FALSE TRUE
null device
1
运行其他人试图使用的Rscript安装:
jpeg png tiff tcltk X11 aqua http/ftp sockets
TRUE TRUE FALSE TRUE FALSE FALSE TRUE TRUE
libxml fifo cledit iconv NLS profmem cairo
TRUE TRUE FALSE TRUE TRUE FALSE TRUE
Error in .External2(C_X11, paste("png::", filename, sep = ""), g$width, :
unable to start device PNG
Calls: png
In addition: Warning message:
In png("abc") : unable to open connection to X11 display ''
Execution halted
答案 0 :(得分:17)
如果有人在谷歌上找到这个,解决方案就是
png("abc", type="cairo")
答案 1 :(得分:5)
您可以在R命令
中运行它options(bitmapType='cairo')
png("xzvf.png")
plot(z~x)
dev.off()
答案 2 :(得分:4)
尝试使用
为Rscript
添加前缀
xvfb-run
甚至
xvfb-run --server-args="-screen 0 1024x768x24"
如png,如果内存服务,则使用x11字体信息。由xvfb-run
启动的虚拟x11服务器提供它,因此它有助于无头设置,cron作业等pp
答案 3 :(得分:0)
我在Ubuntu 14.04的全新安装上遇到了同样的问题。
简单地安装xvfb-run
解决了这个问题,即使在启动R之前没有运行它。