• R语言
  • 在函数中调用lattice画图,没有结果?

冒然发现,在函数中调用 lattice包中的函数画图,不能生成pdf文件,很是蹊跷

<br />
library(lattice)<br />
test.pdf <- function(pdf.file){<br />
  mt <- data.frame(num=1:10,var=rep(c("a","b"),5),time=rep(1:5,2))<br />
  pdf(pdf.file)<br />
  barchart(num ~ time,groups=var,data=mt)<br />
  dev.off()<br />
}</p>
<p>test.pdf("test1.pdf")<br />


这个运行一下,生成的pdf文件中什么也没有
<br />
test.pdf <- function(pdf.file){<br />
  mt <- data.frame(num=1:10,var=rep(c("a","b"),5),time=rep(1:5,2))<br />
  pdf(pdf.file)<br />
  plot(1:10)<br />
  dev.off()<br />
}<br />
test.pdf("test2.pdf")<br />


这个是可以的。</p>

怎么回事呢?

试试这样,加个print

<br />
library(lattice)<br />
setwd("C:\\")<br />
test.pdf <- function(pdf.file){<br />
  mt <- data.frame(num=1:10,var=rep(c("a","b"),5),time=rep(1:5,2))<br />
  pdf(pdf.file)<br />
  print(barchart(num ~ time,groups=var,data=mt))<br />
  dev.off()<br />
}<br />
test.pdf("test1.pdf")</p>
<p>
</p>

回复 第2楼 的 kimboo:果然是这样,多谢![s:11]

lattice和ggplot2都是这样的特征。我觉得这种设计会对初学者造成很大迷惑,尽管它有很大的优势。最好是有个全局选项控制图形要不要立刻画出来。