我使用Github markdown来记录我的数据分析。当我制作一个情节时,我使用:
jpeg("file_name.jpg")
plot(...)
dev.off()
将绘图保存为jpeg,然后可以嵌入并显示在降价文档中,如下所示:
!(file_name.jpg)
但是,我还需要为最终出版物制作一个pdf
的情节。目前我使用pdf("file_name.pdf")
重新编写整个绘图代码,但这导致了大量基本重复的代码。
我已尝试按顺序发出jpeg
和pdf
个调用,但之后只生成了底部调用。
有没有办法在一次代码运行期间从同一代码中生成jpeg
和pdf
文件?
答案 0 :(得分:5)
或者您可以使用dev.copy
:
plot(cars)
dev.copy(jpeg, "cars.jpeg")
dev.off()
dev.copy(pdf, "cars.pdf")
dev.off()
答案 1 :(得分:3)
为什么不使用knitr
?例如:
```{r myplot,fig.width=7, fig.height=6,dev=c('png','pdf','jpeg')}
plot(cars)
```
这将创建同一图表的3个版本/文件:
答案 2 :(得分:3)
@ agstudy的答案很聪明。我认为,规范的答案是,如果你有很多重复的代码,你可以创建一个小实用函数并运行它两次:
tmpplotfun <- function() { ... lots of plot code ... }
pdf(...)
tmpplotfun()
dev.off()
jpeg(...)
tmpplotfun()
dev.off()
你甚至可以进一步抽象出来:
plot_twice <- function(plotfun,...) {
pdf(...)
plotfun()
dev.off()
jpeg(...)
plotfun()
dev.off()
}
plot_twice(tmpplotfun)
...有了更多的聪明才智,你可以复制knitr
已经在做的事情......