10

我开始使用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)可以解决问题。这里发生了什么?这是一个错误还是我错过了什么?

我正在使用带有 lattice_0.19-30 的 R 版本 2.13.1 (2011-07-08)

4

2 回答 2

21

它在R 的常见问题解答中——您需要print()围绕您调用的 lattice 函数:

7.22 为什么格子/格子图形不起作用?

最可能的原因是您忘记告诉 R 显示图表。xyplot() 等格函数创建图形对象,但不显示它(ggplot2 图形和 S-Plus 中的格状图形也是如此)。图形对象的 print() 方法产生实际显示。当您在命令行交互地使用这些函数时,结果会自动打印出来,但是在 source() 或您自己的函数中,您将需要一个显式的 print() 语句。

于 2011-07-21T21:40:46.120 回答
1

案例示例

  1. visualise.r
    • 来电plot2this.r
      • 调用ggplot2并返回p对象

这里修复了plot2this.rreturn(p)to函数中的问题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))

立即输出:具有所需图的预期输出。

于 2017-05-21T14:29:00.570 回答