有两个通用表达式......(只是示例)......
e1 <- expression({sin(x)}) # does not need gr. device
e2 <- expression({curve(sin(x))}) # needs gr. device
检测e2
需要gr的最佳方式是什么?设备提前eval(e2)
。
类似detectNeedsGr(e2)
,返回TRUE
和detectNeedsGr(e1)
,返回FALSE
,它应该可以在非交互模式下工作。
到目前为止,我可以想象解析all.names(e2)
......,相当不方便。
更多详情
eval
之后(显然在eval
之后每个人都知道)答案 0 :(得分:1)
最简单的方法是确保您始终拥有可用的图形设备:
grcap <- any(capabilities()[c("X11", "aqua")])
win <- .Platform$OS.type == "Windows"
inter <- interactive()
if(!(grcap || (win && inter)))
{
filename <- paste0(tempfile(), "%03d.jpg")
jpeg(filename)
}
这将检查您的脚本是否在具有图形功能的会话中运行。如果没有,任何图将被发送到临时目录中的jpg文件,并在关闭R时删除。