嵌套plyr函数,d_ply,按类别写入.pdf

时间:2013-06-06 17:03:09

标签: r loops pdf nested plyr

我想要包装一个d_ply函数,该函数可以自动将几百个数字写入另一个d_ply函数中的.pdf,以便用另一个分类变量对pdf进行分组编写。数据框如下所示:

site  category  code value
1      first    x     10
1      first    y     8
1      second   x      30
2      first    x     3

字段类型为site = numeric,category = char,code = char,value = numeric。

此代码完成了我想要的内容,但只为每个pdf写入1个绘图,因此结果大约有20个文件,每个文件包含1个绘图,而不是与该类别关联的每个代码的绘图。其余的图表在显示器上闪烁。然后pdf关闭,下一个打开。重复。

d_ply(df,"category",function(x){
pdf(file=paste(unique(x$category),".pdf"))
    d_ply( df, "code", function(y) {
    plot(data=y, value~site, xlab=names(df[1]),ylab=unique(y$code))
dev.off()
})    

})

此代码将所有绘图都写入每个类别,因此结果大约有20个文件,每个文件包含所有300个图。

d_ply(df,"category",function(x){
pdf(file=paste(unique(x$category),".pdf"))
    d_ply( df, "code", function(y) {
    plot(data=y, value~site, xlab=names(df[1]),ylab=unique(y$code))

})    
dev.off()
})

我很欣赏这些评论。

更新:我解决了上述问题,因此传递了解决方案。假设df和df中的相关字段id存在,此代码块可以工作。代码读取df中的记录块,按分类变量对它们进行分组,按类别绘制数字字段,然后重复达到类别,然后关闭pdf。其他语句只描述文件,修改字段标题,并报告运行时。

all<-as.data.frame(read.csv(filename.csv', header=TRUE))                                      
is.data.frame(all)
   dim(all)    
   head(all)
   names(all)<-tolower(names(all))
   names(all)
count(all,"parametername")
ptm<-proc.time()
pdf(file="export.pdf")  
d_ply(all,"name",function(x) {
   plot(data=x,value~dce.id, xlab=names(all[1]), ylab=unique(x$name))
   })
dev.off()  
proc.time() -ptm 

0 个答案:

没有答案