0

可能重复:
从 R 函数中生成多个图形

我正在尝试将数据中所有变量的所有图与包点阵中的直方图一起存储。当我直接运行时,它可以工作,但如果我使用函数,请不要创建数字。我的功能是:

plotHistByGroups<-function(data, res)
{
   jpeg("plots/histBy%03d.jpg", quality=100)
   finalres<-as.factor(res)
   names<-colnames(data)
   library(lattice)
   for( i in 1: length(data))
   {
     title<-paste(names[i], "~")
     title<-paste(title, length(levels(finalres)))
     title<-paste(title, "clusters")
     histogram(~data[,i] | finalres, data, xlab=names[i], main=title)    
   }
   dev.off()
}

当我调用该函数时,我只得到一个空图。但是,如果我直接运行,我会获得所有数字:

jpeg("plots/histBy%03d.jpg", quality=100)
histogram(~data[,1] | finalres, data, xlab=names[1], main=title)    
histogram(~data[,2] | finalres, data, xlab=names[2], main=title)    
histogram(~data[,3] | finalres, data, xlab=names[3], main=title)    
...
dev.off()

比亚

4

1 回答 1

2

您需要将其包装在 a 中print(histogram(...)),是的,这是R FAQ 中的问题 7.22

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

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

于 2012-09-20T14:52:13.013 回答