如何一次使用ggplot函数用于大量数据帧?

时间:2015-04-08 14:28:45

标签: r graph plot ggplot2

我将很多.xls文件作为单独的数据框加载到我的全局环境中,现在我想制作图形(并使用ggplot函数)我可以用它来“循环”吗?如何正确编写此代码?我尝试过这样的事情:

files <- list.files("path", pattern = "xls?$", full.names = T)
list <- lapply(files, read_excel)

for (i in 1:length(list))
assign(paste(paste("file", i, sep=""), "df", sep="."), list[[i]])
assign(melt(list[[i]], id.vars="Cele"), list[[i]])
list[[i]]<-ggplot(list[[i]], aes(x=variable,y=value))+geom_bar(stat="identity")
ggsave(list[[i]],filename=paste("myplot",i,".png",sep="")) 

有人可以帮助我吗? :)

1 个答案:

答案 0 :(得分:0)

这是让你入门的东西:

l <- list(mtcars,mtcars[1:15,],mtcars[16:32,])
plot_list <- vector("list",length(l))

p <- ggplot(data = l[[1]],aes(x = mpg,y = disp)) + geom_point()

for (i in seq_along(l)){
    plot_list[[i]] <- p %+% l[[i]]
}

您可以选择使用lapplylist.files将数据读入单个对象(列表)。之后,您使用assign向后退了一步,将它们从一个不错的方便列表中删除到单独的对象中。尝试避免assign,直到你对真正需要的时候有充分的理解。

我使用了一个稍微不必要的技巧,%+%,只是为了说明一些有用的东西。它允许采用现有的绘图并在其上投掷不同的数据帧。它有时可以避免编写重复的ggplot代码。