簡體   English   中英

使用 openxlsx 導出多個數據集

[英]Using openxlsx to export multiple datasets

每當我嘗試添加工作表並將數據集添加到工作簿中時,都會出現錯誤: Error: This Workbook only has 1 sheets, 4 is not valid 有沒有辦法將多個工作表寫入工作簿? 由於格式化功能,我想使用openxlsx

library(openxlsx)
mtcars_list <- split(mtcars, mtcars$cyl)

wb <- createWorkbook()

for (i in mtcars_list){
  addWorksheet(wb, unique(i$cyl))
  writeData(wb, unique(i$cyl), i)
}

從文檔

sheet:要寫入的工作表。 可以是工作表索引或名稱。

由於 cyl 是數字,因此它會嘗試將其 map 到第四張紙,而第四張紙不存在。 只需將其包裝成as.character()

library(openxlsx)
mtcars_list <- split(mtcars, mtcars$cyl)

wb <- createWorkbook()

for (i in mtcars_list){
  addWorksheet(wb, sheetName = unique(i$cyl))
  # as.character
  writeData(wb, sheet = as.character(unique(i$cyl)), i)
}

問題是由您的writeData()行造成的。 一個快速的“臟”修復方法是讓它逐頁運行:

library(openxlsx)
mtcars_list <- split(mtcars, mtcars$cyl)

wb <- createWorkbook()
SHEET <- 1

for (i in mtcars_list){
  addWorksheet(wb, unique(i$cyl))
  writeData(wb, SHEET, i)
  SHEET <- SHEET + 1
}

rm(SHEET)

這將告訴您的循環為每個新 i 跳轉到下一張表。 我稱它為“臟”,因為這會因較大的 i 容易出錯,並且由於SHEET將保存在您的全局環境中,因此您應該在循環后將其刪除,以確保下次運行代碼時它不會弄亂.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM