1

我在linux(LMDE)上。

我有这个脚本,可以用经典图形和 ggplot 绘制许多东西。有时我也会调用pdf()or png(),但有时我只是让默认的 grDevice 弹出并为我显示(RStudioGD 或 x11())

问题是,当我使用不同的用户(在我的例子中是 apache www-data)从 Rscript 执行这个脚本时,当我没有预加载任何其他设备时,它可能会引发权限问题,特别是对于默认设备。(例如Error in (function (file = ifelse(onefile, "Rplots.pdf", "Rplot%03d.pdf"), : cannot open file 'Rplots.pdf' Calls: source ... barplot -> barplot.default -> dev.hold ->:)

我希望能够在脚本的开头(和结尾)仅通过一两行来丢弃任何这些图(甚至所有图)。nullDevice()/ script /之类的东西dev.off()将确保至少将默认图形通过管道传输到无害的东西。

任何想法 ?

4

1 回答 1

1

我没见过这样的设施。通常所做的是使用interactive仅在交互式会话中返回 TRUE 的函数来测试代码运行的条件:

 if (interactive() ){  pdf("myPlot.pdf")
   plot(1:10)
   dev.off()        }

 ?Devices
于 2013-09-18T18:58:11.343 回答