Te doy la bienvenida a nuestra comunidad, en este sitio encontrarás la respuesta a lo que estabas buscando.
Especifique el nombre de la hoja para cada elemento de la lista.
library(xlsx)
file <- paste("usarrests.xlsx", sep = "")
write.xlsx(USArrests, file, sheetName = "Sheet1")
write.xlsx(USArrests, file, sheetName = "Sheet2", append = TRUE)
El segundo enfoque sugerido por @flodel, sería usar addDataFrame
. Este es más o menos un ejemplo de la página de ayuda de dicha función.
file <- paste("usarrests.xlsx", sep="")
wb <- createWorkbook()
sheet1 <- createSheet(wb, sheetName = "Sheet1")
sheet2 <- createSheet(wb, sheetName = "Sheet2")
addDataFrame(USArrests, sheet = sheet1)
addDataFrame(USArrests * 2, sheet = sheet2)
saveWorkbook(wb, file = file)
Suponiendo que tiene una lista de marcos de datos y una lista de nombres de hojas, puede usarlos en pares.
wb <- createWorkbook()
datas <- list(USArrests, USArrests * 2)
sheetnames <- paste0("Sheet", seq_along(datas)) # or names(datas) if provided
sheets <- lapply(sheetnames, createSheet, wb = wb)
void <- Map(addDataFrame, datas, sheets)
saveWorkbook(wb, file = file)
Aquí está la solución con openxlsx:
## create data;
dataframes <- split(iris, iris$Species)
# create workbook
wb <- createWorkbook()
#Iterate the same way as PavoDive, slightly different (creating an anonymous function inside Map())
Map(function(data, nameofsheet)
addWorksheet(wb, nameofsheet)
writeData(wb, nameofsheet, data)
, dataframes, names(dataframes))
## Save workbook to excel file
saveWorkbook(wb, file = "file.xlsx", overwrite = TRUE)
.. sin embargo, openxlsx también puede usar su función openxlsx::write.xlsx para esto, por lo que puede proporcionarle al objeto su lista de marcos de datos y la ruta del archivo, y openxlsx es lo suficientemente inteligente como para crear la lista como hojas dentro del archivo xlsx. El código que publico aquí con Map() es si desea formatear las hojas de una manera específica.
digamos que su lista de marcos de datos se llama Lst
y que el libro de trabajo en el que desea guardar se llama wb.xlsx
. Entonces puedes usar:
library(xlsx)
counter <- 1
for (i in length(Lst))
write.xlsx(x=Lst[[i]],file="wb.xlsx",sheetName=paste("sheet",counter,sep=""),append=T)
counter <- counter + 1
GRAMO