[英]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.