是否可以编写一个包含多个工作表的Excel文件,并在每个工作表中插入一个命名表格?

问题描述 投票:0回答:2

我通常会使用 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 中创建已命名表的文件。

我还没找到解决办法

r excel datatables excel-tables
2个回答
1
投票

一种方法是使用循环。这是一个可重现的示例,其中数据的命名范围与数据和工作表名称相同:

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)


0
投票

@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)
© www.soinside.com 2019 - 2024. All rights reserved.