使用 apply family 将两个列表中的数据帧写入 excel 文件的两个单独工作表
Write data frames from two lists to two separate sheets of an excel file using apply family
我想使用 apply 系列函数将每个文件从一个目录复制到第二个 sheet 第二个目录中的每个文件。
我已经尝试了很多事情,最终完成了以下工作,但仅针对目录中的单个文件。如何将它应用到该文件夹中的所有文件?
setwd(".../r_path//390")
l1 <- list.files(pattern='*.xlsx')
r1 = lapply(l1, read.xlsx, sheetIndex=1, header=TRUE)
names(r1) <- l1
s1 = split(r1, names(r1))
setwd(".../r_path//390de")
l2 <- list.files(pattern='*.xlsx')
r2 = lapply(l2, read.xlsx, sheetIndex=1, header=TRUE)
names(r2) <- l2
s2 = split(r2, names(r2))
library(plyr)
library(xlsx)
l_ply (r1[1], function(x) write.xlsx(x,
file =paste0(names(s2[[1]])), sheetName = "TECO",
append = TRUE, row.names = FALSE))
目录的第一个 excel 文件作为第二个 sheet 复制到另一个 excel 文件。但我希望这适用于文件夹中的所有文件。欢迎任何建议!
根据 XLConnect 的文档,最简单的方法是先创建工作簿(使用 loadWorkbook()),然后对于要创建的每个工作表,使用 createSheet() 在工作簿,然后将数据写入您使用 writeWorksheet() 创建的工作表以及您创建的工作簿和工作表对象。在循环结束时,调用 saveWorkbook() 将结果写入 Excel 文件。该过程类似于以下内容:
# Create a workbook (if it doesn't currently exist it will be created)
wb <- loadWorkbook("myexcelfile.xlsx",create=TRUE)
# Create a worksheet within the workbook
createSheet(wb,name="worksheet1")
# Write a dataframe called data_to_write to the new worksheet
writeWorksheet(wb,data_to_write,sheet="worksheet1")
# Write the Excel file
saveWorkbook(wb)
围绕您的问题的工作表部分进行循环很简单。
这是我的解决方案:
for (i in names(r1)) {
l_ply (r1[i], function(x) write.xlsx(x,file =paste0(names(s2[[i]])),
sheetName = "TECO", append = TRUE, row.names = FALSE))}
我想使用 apply 系列函数将每个文件从一个目录复制到第二个 sheet 第二个目录中的每个文件。
我已经尝试了很多事情,最终完成了以下工作,但仅针对目录中的单个文件。如何将它应用到该文件夹中的所有文件?
setwd(".../r_path//390")
l1 <- list.files(pattern='*.xlsx')
r1 = lapply(l1, read.xlsx, sheetIndex=1, header=TRUE)
names(r1) <- l1
s1 = split(r1, names(r1))
setwd(".../r_path//390de")
l2 <- list.files(pattern='*.xlsx')
r2 = lapply(l2, read.xlsx, sheetIndex=1, header=TRUE)
names(r2) <- l2
s2 = split(r2, names(r2))
library(plyr)
library(xlsx)
l_ply (r1[1], function(x) write.xlsx(x,
file =paste0(names(s2[[1]])), sheetName = "TECO",
append = TRUE, row.names = FALSE))
目录的第一个 excel 文件作为第二个 sheet 复制到另一个 excel 文件。但我希望这适用于文件夹中的所有文件。欢迎任何建议!
根据 XLConnect 的文档,最简单的方法是先创建工作簿(使用 loadWorkbook()),然后对于要创建的每个工作表,使用 createSheet() 在工作簿,然后将数据写入您使用 writeWorksheet() 创建的工作表以及您创建的工作簿和工作表对象。在循环结束时,调用 saveWorkbook() 将结果写入 Excel 文件。该过程类似于以下内容:
# Create a workbook (if it doesn't currently exist it will be created)
wb <- loadWorkbook("myexcelfile.xlsx",create=TRUE)
# Create a worksheet within the workbook
createSheet(wb,name="worksheet1")
# Write a dataframe called data_to_write to the new worksheet
writeWorksheet(wb,data_to_write,sheet="worksheet1")
# Write the Excel file
saveWorkbook(wb)
围绕您的问题的工作表部分进行循环很简单。
这是我的解决方案:
for (i in names(r1)) {
l_ply (r1[i], function(x) write.xlsx(x,file =paste0(names(s2[[i]])),
sheetName = "TECO", append = TRUE, row.names = FALSE))}