Розмір даних у корпусі невеликий, у R багато пакетів та функцій, які можна використовувати відповідно до ваших вимог.
write.xlsx, write.xlsx2, XLconnect також виконують роботу, але іноді вони повільні , порівняно з openxlsx .
Отже, якщо ви маєте справу з великими наборами даних і натрапили на помилки Java. Я б запропонував поглянути на "openxlsx", який дійсно приголомшливий, і скоротити час до 1/12 .
Я все перевірив і, нарешті, я був справді вражений продуктивністю можливостей openxlsx.
Ось кроки для запису декількох наборів даних на кілька аркушів.
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") повинен бути статичним, оскільки він посилається на деяку утиліту з Rtools.
Примітка: Incase Rtools не встановлено у вашій системі, будь ласка, встановіть його спочатку для безперебійної роботи. ось посилання для довідки: (виберіть відповідну версію)
https://cran.r-project.org/bin/windows/Rtools/
перевірте параметри за посиланням нижче (потрібно встановити всі прапорці під час встановлення)
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
openxlsxПакет дійсно хороший для читання та запису величезних даних із / у файлах Excel і має безліч варіантів спеціального форматування в Excel.
Цікавий факт, що нам не доводиться турбуватися про пам'ять купи Java тут.
createSheet
функція, яка дозволяє створювати нові аркуші, а потім писати на них у циклі. Крім того, еквівалентні функції в XLConnect векторизуються, що дозволяє писати список кадрів даних на декілька аркушів.