我有以下数据框列表:
d1 <- data.frame(y1=c(1,2,3),y2=c(4,5,6))
d2 <- data.frame(y1=c(3,2,1),y2=c(6,5,4))
df <- list(FOO=d1, BAR=d2)
看起来像这样:
> df
$FOO
y1 y2
1 1 4
2 2 5
3 3 6
$BAR
y1 y2
1 3 6
2 2 5
3 1 4
一个绘制每个单独数据框并根据列表ID命名它们的函数:
plot_df_func <- function(basename="QUX",in_df) {
outfile <- paste(basename,".png",sep="")
png(outfile)
plot(in_df,main=basename)
dev.off()
}
在这种情况下如何使用lapply
?
在一天结束时,它会有&#34; FOO.png&#34;和&#34; BAR.png&#34;。
我尝试了但失败了:
> lapply(df, plot_df_func)
Error in plot(in_df, main = basename) :
argument "in_df" is missing, with no default
答案 0 :(得分:1)
我会使用for
循环。在我看来,如果你只想要副作用(比如绘图或文件)而且没有返回值,那么for
循环总是更好。
d1 <- data.frame(y1=c(1,2,3),y2=c(4,5,6))
d2 <- data.frame(y1=c(3,2,1),y2=c(6,5,4))
df <- list(FOO=d1, BAR=d2)
plot_df_func <- function(basename="QUX",in_df) {
#outfile <- paste(basename,".png",sep="")
#png(outfile)
plot(in_df,main=basename)
#dev.off()
}
layout(1:2)
for (i in names(df)) plot_df_func(i, df[[i]])