【问题标题】:R -openxlsx - delete multiple worksheetsR -openxlsx - 删除多个工作表
【发布时间】:2022-01-04 01:20:00
【问题描述】:

有没有办法从 openxlsx 中的工作簿中删除多个工作表? 还是只保留选定的工作表?

【问题讨论】:

    标签: r openxlsx


    【解决方案1】:

    您可以使用 openxlsx 包中的 removeWorksheet

    这个例子摘自reference manual的第69页。

    wb <- createWorkbook()
    addWorksheet(wb, sheetName = "Sheet 1")
    addWorksheet(wb, sheetName = "Sheet 2")
    writeDataTable(wb, sheet = "Sheet 1", x = iris, tableName = "iris")
    writeDataTable(wb, sheet = 1, x = mtcars, tableName = "mtcars", startCol = 10)
    removeWorksheet(wb, sheet = 1) ## delete worksheet removes table objects
    

    编辑:

    library(openxlsx)
    library(purrr)
    
    nms <- c("Sheet 1","Sheet 2","Sheet 3")
    
    wb <- createWorkbook()
    
    nms %>% 
     walk(~ addWorksheet(wb, sheetName = .))
    
    addWorksheet(wb, sheetName = 'sheet 4')
    
    wb
    #> A Workbook object.
    #>  
    #> Worksheets:
    #>  Sheet 1: "Sheet 1"
    #>  
    #> 
    #>  Sheet 2: "Sheet 2"
    #>  
    #> 
    #>  Sheet 3: "Sheet 3"
    #>  
    #> 
    #>  Sheet 4: "sheet 4"
    #>  
    #> 
    #>  
    #>  Worksheet write order: 1, 2, 3, 4
    #>  Active Sheet 1: "Sheet 1" 
    #>  Position: 1
    
    nms %>% 
      walk(~ removeWorksheet(wb, .))
    
    wb
    #> A Workbook object.
    #>  
    #> Worksheets:
    #>  Sheet 1: "sheet 4"
    #>  
    #> 
    #>  
    #>  Worksheet write order: 1
    #>  Active Sheet 1: "sheet 4" 
    #>  Position: 1
    

    reprex package (v2.0.1) 于 2021 年 11 月 25 日创建

    【讨论】:

    • 据我了解,这一次只删除了 1 张纸,对吧?所以,我应该用 for 循环顺序应用它..
    • @tzema 是的,您可以使用 for 循环或映射/应用函数。我使用来自purrr 库的walk 编辑了答案。
    猜你喜欢
    • 2017-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 2020-11-28
    • 1970-01-01
    相关资源
    最近更新 更多