我通常会使用 write.xlsx 函数以这种方式生成一个包含多个工作表的新 Excel 文件,并在其中插入一个数据库列表,每个数据库都有自己的名称:
#EXAMPLE:
[....]
list_of_datasets <- (list("MARCO" = dtMarco, "LUCA" = dtLuca, "GIACOMO" = dtGiacomo)) # with this i give sheetnames
write.xlsx(list_of_datasets, "G:/GENCARELLI/MACCHINE.xlsx")
它实际上运行良好,但我的下一步是打开 Excel 并为每个工作表创建一个命名表。 我已经给单张纸指定了不同的名称,但我需要知道是否可以使用一些命令在 R 中创建已命名表的文件。
我还没找到解决办法
一种方法是使用循环。这是一个可重现的示例,其中数据的命名范围与数据和工作表名称相同:
library(openxlsx)
list_of_datasets <- list("MARCO" = mtcars, "LUCA" = iris, "GIACOMO" = anscombe)
# create a workbook
wb <- createWorkbook()
for(i in seq_along(list_of_datasets)){
#create worksheets for each data set
addWorksheet(wb, names(list_of_datasets)[i])
#write and name data for each worksheet
writeData(wb,
sheet = names(list_of_datasets)[i],
x = list_of_datasets[[i]],
name = names(list_of_datasets)[i])
}
saveWorkbook(wb, "example.xlsx", overwrite = TRUE)
@Peter 提出的另一种方法是使用
purrr::iwalk()
。首先,捕获函数中的步骤:
add_new_data <- function(dataset, name) {
#create worksheets for each data set
addWorksheet(wb, name)
#write and name data for each worksheet
writeData(wb,
sheet = name,
x = dataset,
name = name)
}
然后运行以下命令后:
library(openxlsx)
list_of_datasets <- list("MARCO" = mtcars, "LUCA" = iris, "GIACOMO" = anscombe)
wb <- createWorkbook()
使用
iwalk()
: 迭代每个
purrr::iwalk(list_of_datasets, add_new_data)