我开始使用lattice
图形包,但我偶然发现了一个问题。我希望有人可以帮助我。
我想用相应的函数绘制直方图。
这是文件foo.r
:
library("lattice")
data <- data.frame(c(1:2),c(2:3))
colnames(data) <- c("RT", "Type")
pdf("/tmp/baz.pdf")
histogram( ~ RT | factor(Type), data = data)
dev.off()
当我使用R --vanilla < foo.r
运行此代码时,它可以正常运行。
但是,如果我使用第二个文件bar.r
和
source("bar")
并运行R --vanilla < bar.r
代码会生成错误的pdf文件。
现在我发现source("bar", echo=TRUE)
解决了这个问题。这里发生了什么?这是一个错误还是我错过了什么?
我正在使用R版本2.13.1(2011-07-08)和lattice_0.19-30
答案 0 :(得分:20)
它位于FAQ for R - 你需要print()
围绕你调用的格子函数:
7.22为什么格子/格子图形不起作用?
最可能的原因是你忘了告诉R显示 图形。诸如xyplot()之类的格子函数创建了一个图形对象,但是 不显示它(ggplot2图形和Trellis也是如此) S-Plus中的图形)。生成图形对象的print()方法 实际显示。当您以交互方式使用这些功能时 命令行,结果会自动打印,但在source()或 在你自己的函数中,你需要一个显式的print()语句。
答案 1 :(得分:1)
案例
visualise.r
plot2this.r
ggplot2
并返回p
对象此处修复了从plot2this.r
到return(p)
的函数return(print(p))
。
初始plot2this.r
p <- ggplot(dat.m, aes(x = Vars, y = value, fill=variable))
return(p)
修复
p <- ggplot(dat.m, aes(x = Vars, y = value, fill=variable))
return(print(p))
现在输出:具有所需图的预期输出。