ขนาดข้อมูลในกรณีเล็ก R มีแพ็คเกจและฟังก์ชั่นมากมายที่สามารถใช้งานได้ตามความต้องการของคุณ
write.xlsx, write.xlsx2, XLconnectก็ทำงานได้เช่นกัน แต่บางครั้งก็ช้าเมื่อเทียบกับopenxlsx openxlsx
ดังนั้นหากคุณกำลังจัดการกับชุดข้อมูลขนาดใหญ่และพบข้อผิดพลาดของ java ฉันขอแนะนำให้ดู"openxlsx"ซึ่งยอดเยี่ยมมากและลดเวลาลง
ฉันได้ทดสอบทั้งหมดและในที่สุดฉันก็ประทับใจกับประสิทธิภาพของความสามารถของ 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 heap ที่นี่
createSheet
ฟังก์ชั่นที่ช่วยให้คุณสร้างแผ่นงานใหม่แล้วเขียนลงในแบบวนซ้ำ นอกจากนี้ฟังก์ชันที่เทียบเท่าในXLConnectยังเป็นเวกเตอร์ซึ่งช่วยให้สามารถเขียนรายการกรอบข้อมูลลงในแผ่นงานหลายแผ่นได้