我正在使用ggplot2生成pdf报告。代码看起来像这样
pdf()
for (){
p <- ggplot(..)
print(p)
}
dev.off()
有时因为ggplot的数据质量无法生成情节。可能有多种原因,我们不希望检查数据失败的所有可能组合。我们只想检查ggplot是否失败 - 并继续。这就是我提出的 - 这是有效的,但有一些问题。
library(ggplot2)
p <- ggplot(mtcars, aes(wt, mpg)) +
geom_point()
p.bad <- ggplot(mtcars, aes(wt, as.character(mpg))) +
geom_point() +
scale_y_continuous()
pdf()
a <- try(print(p), silent = TRUE) # double printing
if (class(a)!='try-error'){
print(p)
}
b <- try(print(p.bad), silent = TRUE)
if (class(b)!='try-error'){
print(p.bad)
}
dev.off()
尝试(打印) - 如果没有错误,则生成图表。有没有办法阻止它?这可能是最好的解决方案。如果我们执行以下操作 - 没有双重打印,但第二次尝试(打印)生成空白页。
pdf()
a <- try(print(p), silent = TRUE)
b <- try(print(p.bad), silent = TRUE)
dev.off()
有没有其他方法可以找出ggplot是否会产生错误?
答案 0 :(得分:2)
我建议使用ggsave
:
ttt <- function() {
require(ggplot2)
p.bad <- ggplot(mtcars, aes(wt, as.character(mpg))) +
geom_point() +
scale_y_continuous()
a <- try(ggsave("test.pdf",p.bad))
return("test")
}
ttt()
# Saving 12.9 x 9.58 in image
# Error : Discrete value supplied to continuous scale
# [1] "test"