在R中循环保存Excel文件

时间:2019-02-15 21:45:41

标签: r excel loops openxlsx

我有数据框并创建了它的一个子集。我拆分数据框及其 子集受可变因素影响。我想将其保存在Excel文件中。我想要 编写循环以创建多个Excel文件数据框架和子集文件 在工作表中按可变因素。

我写了一个代码,它只是保存了最后一种可变工作簿。 如何创建所有工作簿。

rm(list = ls())

mtcars


split_mtcars <- split(mtcars, mtcars$cyl)
split_mtcars_subset <- split(mtcars[,2:4], mtcars$cyl)

cyl_type <- names(split_mtcars)


for(i in length(cyl_type)){
wb <- createWorkbook()
addWorksheet(wb, "raw")
addWorksheet(wb, "subset")

writeData(wb, 1, split_mtcars[[i]])
writeData(wb, 2, split_mtcars_subset[[i]])

saveWorkbook(wb, file = paste0(cyl_type[i],".xlsx"), overwrite = TRUE)
}

预先感谢

1 个答案:

答案 0 :(得分:0)

请考虑by,以便按因子划分数据帧,以避免需要中间对象并隐藏循环。下面将输出您的工作簿并构建一个数据帧列表。

split_mtcars <- by(mtcars, mtcars$cyl, function(sub) {
    wb <- createWorkbook()
    addWorksheet(wb, "raw")
    addWorksheet(wb, "subset")

    writeData(wb, 1, sub)
    writeData(wb, 2, sub[,2:5])

    saveWorkbook(wb, file = paste0(sub$cyl[1],".xlsx"), overwrite = TRUE)

    return(sub)   # TO REPLICATE split()
})