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

kmpatx3s  于 2023-09-27  发布在  其他
关注(0)|答案(2)|浏览(116)

我通常以这种方式生成一个新的Excel文件,其中包含多个工作表,使用write.xlsx函数并在其中插入一个数据库列表,每个数据库都有自己的名称:

#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与一些命令已经命名的表文件。
我还没找到解决办法

ars1skjm

ars1skjm1#

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

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)
lbsnaicq

lbsnaicq2#

@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)

相关问题