使用R中的循环将数百个数据框导出为xlsx

我在R中创build了数百个dataframe,我想将它们导出到本地位置。 dataframe的所有名称都存储在一个向量中:

name.vec<-c('df1','df2','df3','df4','df5','df5') 

name.vec中的每一个都是一个数据框。 我想要做的是将这些数据框导出为ex​​cel文件,但我不想这样做:

 library("xlsx") write.xlsx(df1,file ="df1.xlsx") write.xlsx(df2,file ="df2.xlsx") write.xlsx(df3,file ="df3.xlsx") 

因为有数百个dataframe,这是乏味和危险的。 我想要一些像下面这样的东西:

 library('xlsx') for (k in name.vec) { write.xlsx(k,file=paste0(k,'.xlsx')) } 

但这是行不通的。

任何人都知道如何做到这一点? 你的时间和知识将深受赞赏。 提前致谢。

for循环不起作用的第一个原因是代码正在尝试写入一个名称,例如“df1”作为xlsx文件的内容,而不是数据框。 这是因为你没有将数据框本身存储在“name.vec”中。 所以要修复for循环,你必须做更多的事情:

 df.list<-list(df1,df2,df3) name.vec<-c('df1','df2','df3') library('xlsx') for (k in 1:length(name.list)){ write.xlsx(df.list[[k]],file=paste0(name.vec[k],'.xlsx')) } 

但是,for循环通常比其他选项慢。 所以这里有另一种方式:

 sapply(1:length(df.list), function(i) write.xlsx(df.list[[i]],file=paste0(name.vec[i],'.xlsx'))) 

输出是3个dataframe,取自由名称向量命名的df列表。

在某些时候,也许最好是切换到这个新的包: writexl