有没有办法在一次调用 lapply 时打印以归档 ddply 的结果和 dfs 列表?
示例 df
m<-rep(c("a1","a2","a3","b1","b2","b3","c1","c2","c3"),2)
n<-rep(c(rep(letters[1],3),rep(letters[2],3),rep(letters[3],3)),2)
o<-rep(c("2009","2010"),9)
p<-c(rep("width",9),rep("depth",9))
r<-c(sample((100:200),9),sample((20:50),9))
s<-data.frame(m,n,o,p,r)
colnames(s)<-c("event","site","year","metric","value")
s
u<-split(s,s$year)
此功能分两步正常工作:
w<- lapply(u,function(x) {
v<-ddply(x,.(metric),
summarize, result_var_all=var(value))
})
sapply(names(w), function(x){ write.csv(w[x],file=paste(x,'.csv'))})
但是是否可以将这些步骤结合起来,更像是:
lapply(u,function(x) {
v<-ddply(x,.(metric),
summarize, result_var_all=var(value))
write.table(v,file=paste(names(u[x]),'.csv'))})
这是行不通的。我想我明白为什么,如果 x 是一个新列表。Subbing names(x[1]) for u[x] 确实运行,但将第一个字段名称写入文件标题,看起来它只生成一个输出文件,而不是按年份拆分输出文件。
混合dfs和列表的问题是给定的
names(u)
names(u[1])
x 没有名字吗?