Solución:
Puede escribir en varias hojas con el xlsx
paquete. Solo necesitas usar una sheetName
para cada marco de datos y necesita agregar append=TRUE
:
library(xlsx)
write.xlsx(dataframe1, file="filename.xlsx", sheetName="sheet1", row.names=FALSE)
write.xlsx(dataframe2, file="filename.xlsx", sheetName="sheet2", append=TRUE, row.names=FALSE)
Otra opción, una que le brinda más control sobre el formato y dónde se coloca el marco de datos, es hacer todo dentro del código R / xlsx y luego guardar el libro de trabajo al final. Por ejemplo:
wb = createWorkbook()
sheet = createSheet(wb, "Sheet 1")
addDataFrame(dataframe1, sheet=sheet, startColumn=1, row.names=FALSE)
addDataFrame(dataframe2, sheet=sheet, startColumn=10, row.names=FALSE)
sheet = createSheet(wb, "Sheet 2")
addDataFrame(dataframe3, sheet=sheet, startColumn=1, row.names=FALSE)
saveWorkbook(wb, "My_File.xlsx")
En caso de que le resulte útil, aquí hay algunas funciones de ayuda interesantes que facilitan la adición de formato, metadatos y otras características a las hojas de cálculo utilizando xlsx
: http://www.sthda.com/english/wiki/r2excel-read-write-and-format-easily-excel-files-using-r-software
También puede utilizar la biblioteca openxlsx para exportar varios conjuntos de datos a varias hojas en un solo libro de trabajo. La ventaja de openxlsx sobre xlsx es que openxlsx elimina las dependencias de las bibliotecas java.
Escriba una lista de data.frames en hojas de trabajo individuales usando nombres de lista como nombres de hojas de trabajo.
require(openxlsx)
list_of_datasets <- list("Name of DataSheet1" = dataframe1, "Name of Datasheet2" = dataframe2)
write.xlsx(list_of_datasets, file = "writeXLSX2.xlsx")
Hay una nueva biblioteca en la ciudad, de rOpenSci: writexl
Marco de datos portátil y liviano para exportador xlsx basado en libxlsxwriter. No se requiere Java o Excel
Lo encontré mejor y más rápido que las sugerencias anteriores (trabajando con la versión dev):
library(writexl)
sheets <- list("sheet1Name" = sheet1, "sheet2Name" = sheet2) #assume sheet1 and sheet2 are data frames
write_xlsx(sheets, "path/to/location")