Nel caso in cui la dimensione dei dati sia piccola, R ha molti pacchetti e funzioni che possono essere utilizzati secondo le tue esigenze.
Anche write.xlsx, write.xlsx2, XLconnect fanno il lavoro, ma a volte sono lenti rispetto a openxlsx .
Quindi, se hai a che fare con set di dati di grandi dimensioni e ti sei imbattuto in errori java. Suggerirei di dare un'occhiata a "openxlsx" che è davvero fantastico e ridurre il tempo a 1/12.
Ho provato tutto e alla fine sono rimasto davvero impressionato dalle prestazioni delle funzionalità di openxlsx.
Ecco i passaggi per scrivere più set di dati in più fogli.
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") deve essere statico in quanto prende riferimento ad alcune utility di Rtools.
Nota: Incase Rtools non è installato sul tuo sistema, installalo prima per un'esperienza fluida. ecco il link per il tuo riferimento: (scegli la versione appropriata)
https://cran.r-project.org/bin/windows/Rtools/
controlla le opzioni come da link sottostante (è necessario selezionare tutte le caselle di controllo durante l'installazione)
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
Il pacchetto openxlsx è davvero ottimo per leggere e scrivere dati enormi da / in file excel e ha molte opzioni per la formattazione personalizzata all'interno di Excel.
Il fatto interessante è che qui non dobbiamo preoccuparci della memoria java heap.
createSheet
funzione che ti permette di creare nuovi fogli e poi di scrivere su di essi, in un ciclo. Inoltre, le funzioni equivalenti in XLConnect sono vettorializzate, consentendo di scrivere un elenco di frame di dati su più fogli.