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

标签 r excel batch-processing r-xlsx

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

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

name.vec中的每一个都是一个数据框。 我想做的是将这些数据框导出为 excel 文件,但我不想按照下面的方式执行此操作:

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

因为有数百个数据帧,这是乏味且危险的。 我想要像下面这样的东西:

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 个数据帧,取自 df 列表,由名称向量命名。

最好在某个时候切换到较新的软件包:writexl

关于r - 使用 R 中的循环将数百个数据帧导出为 xlsx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46154808/

相关文章:

在 ObserveEvent 内部渲染(动态绘图生成)

R:hclust 中未使用的参数 "label"

r - 如何使用 st_write 将 sf 对象作为 shapefile 写入 ESRI 文件地理数据库?

c# - 如何使用C#知道Excel中的分页符

r - 为数据框中的多列设置因子水平的顺序

vba - 使用索引从字符串解析 Visual Basic 日期对象

excel - 根据 VBA Excel 中的复选框值显示或删除图像

batch-file - 无法使用 DOS START 命令写入批处理文件处理结果

spring boot 处理大请求体 - 通过多线程处理批量

linux - 如何在 bash 命令行上使用 awk 的输出