有没有办法以编程方式非破坏性地知道当前图形设备是否是基础图形?
我需要它是非破坏性的,因为它不会打开新设备、关闭当前设备或以其他方式修改它(例如,添加点/线等)。
例如,
isbasegx <- function() {
length(dev.list()) > 0 && # dev.interactive() &&
!identical(par("usr"), c(0, 1, 0, 1))
}
Run Code Online (Sandbox Code Playgroud)
(编辑删除dev.interactive(),因为这在报告生成中也很有用。)
这可能是一个开始,但是任何依赖的东西par()都会失败,因为基于网格的图形不会更新它们(这并不奇怪):
plot(1, 1)
par1 <- par()
ggplot(mtcars, aes(mpg, disp)) # same graphics device
par2 <- par()
all(mapply(identical, par1, par2))
# [1] TRUE
Run Code Online (Sandbox Code Playgroud)
图形类型还有哪些其他“提示”?