我有一个构建数据框DF
的R脚本,然后使用Rscripts
调用目录source
中的每个脚本来生成图。所以典型的执行看起来像
pdf('output.pdf')
source('Rscripts/make_plot.r')
dev.off()
其中Rscripts/make_plot.r
可能包含类似
plot(DF$x, DF$y)
到目前为止,这种策略运作得非常好(虽然我不知道它是否是推荐的做事方式)。但是,我现在正在撞墙。我的一个Rscripts使用wireframe
而非plot
制作图表,因此出于某种原因,在该文件上调用source
并不会产生图表。通过将以下内容放入make_plot.r
:
library("lattice")
N <- 10
s <- seq(0, 1, 0.1)
wireframe(z~x*y, data=data.frame(x=rep(s, each=N), y=rep(s, N), z=rep(s, N)))
在单独调用时有效,但在通过source
调用时不生成绘图。
如何解决此问题?
答案 0 :(得分:2)
为什么格子/格子图形不起作用?
最可能的原因是你忘了告诉R显示图表。诸如xyplot()之类的格子函数创建了一个图形对象,但不显示它(ggplot2图形和S-PLUS中的Trellis图形也是如此)。图形对象的print()方法产生实际显示。当您在命令行以交互方式使用这些函数时,结果会自动打印,但在source()或您自己的函数内部,您将需要一个显式的print()语句。
由于wireframe()
是莱迪思函数,因此您需要将其包装在print()