我想包装一个 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