En caso de que el tamaño de los datos sea pequeño, R tiene muchos paquetes y funciones que se pueden utilizar según sus necesidades.
write.xlsx, write.xlsx2, XLconnect también hacen el trabajo, pero a veces son lentos en comparación con openxlsx .
Entonces, si está lidiando con grandes conjuntos de datos y encontró errores de Java. Sugeriría echar un vistazo a "openxlsx", que es realmente impresionante y reducir el tiempo a 1/12 .
Lo probé todo y finalmente quedé realmente impresionado con el rendimiento de las capacidades de openxlsx.
Estos son los pasos para escribir varios conjuntos de datos en varias hojas.
install.packages("openxlsx")
library("openxlsx")
start.time <- Sys.time()
x <- as.data.frame(matrix(1:4000000,200000,20))
y <- as.data.frame(matrix(1:4000000,200000,20))
z <- as.data.frame(matrix(1:4000000,200000,20))
wb <- createWorkbook("Example.xlsx")
Sys.setenv("R_ZIPCMD" = "C:/Rtools/bin/zip.exe")
Sys.setenv ("R_ZIPCMD" = "C: /Rtools/bin/zip.exe") tiene que ser estático, ya que hace referencia a alguna utilidad de Rtools.
Nota: En caso de que Rtools no esté instalado en su sistema, instálelo primero para una experiencia fluida. aquí está el enlace para su referencia: (elija la versión apropiada)
https://cran.r-project.org/bin/windows/Rtools/
marque las opciones según el enlace a continuación (debe seleccionar todas las casillas de verificación durante la instalación)
https://cloud.githubusercontent.com/assets/7400673/12230758/99fb2202-b8a6-11e5-82e6-836159440831.png
addWorksheet(wb, "Sheet 1")
addWorksheet(wb, "Sheet 2")
addWorksheet(wb, "Sheet 3")
writeData(wb, 1, x)
writeData(wb, 2, x = y, withFilter = TRUE)
writeDataTable(wb, 3, z)
saveWorkbook(wb, file = "Example.xlsx", overwrite = TRUE)
end.time <- Sys.time()
time.taken <- end.time - start.time
time.taken
El paquete openxlsx es realmente bueno para leer y escribir datos enormes desde / en archivos de Excel y tiene muchas opciones para el formato personalizado dentro de Excel.
El hecho interesante es que aquí no tenemos que preocuparnos por la memoria del montón de Java.
createSheet
función que le permite crear nuevas hojas y luego escribirlas en un bucle. Además, las funciones equivalentes en XLConnect están vectorizadas, lo que permite escribir una lista de marcos de datos en varias hojas.