นี่คือข้อผิดพลาดในการจัดสรรหน่วยความจำทั่วไป ปัญหาปกติคือ ว่า Revolution R กำลังพยายามอ่านแถวมากเกินไปในครั้งเดียวจากแฟ้มข้อมูลของคุณเพื่อประมวลผลข้อมูลในหน่วยความจำสำหรับตัวเดียวกลุ่มข้อมูลกลุ่ม
ก่อนอื่น ให้ลองต่อไปนี้ เมื่อต้องการแก้ไขปัญหา:
ตั้งค่าขนาดเล็กสำหรับอาร์กิวเมนต์ 'rowsPerRead' ในคำสั่ง rxImport() ของคุณ ลองค่า '10000' หรือน้อยกว่า คุณอาจต้องลองตั้งค่าที่แตกต่างกันสำหรับ
ข้อมูลนี้เพื่อค้นหาค่าที่ทำงานด้วย และนำเข้าข้อมูลเร็วที่สุด
ถ้าวิธีนี้ไม่ช่วย และแฟ้ม csv ของคุณมีคอลัมน์มากมาย สามารถช่วยให้การนำเข้าคอลัมน์ข้อมูล 'x' ในแต่ละครั้ง ตัวอย่างเช่น ถ้าชุดข้อมูลเป็นคอลัมน์ 5000 คุณอาจต้องการนำเข้าข้อมูลสำหรับคอลัมน์ 50 ในแต่ละครั้ง และเขียนข้อมูลสำหรับคอลัมน์ 50 ไปยังไฟล์ XDF ใหม่ และผนวกไปยังแฟ้ม XDF ที่มีอยู่ได้
ต่อไปนี้คือบางอย่าง R รหัสเมื่อต้องการทำเช่นนั้น:
varNames <- readLines("mycsv.txt", n=1) colsPerRead <- 50 ## Set how many columns to read from the csv file at a time. You may want to initially set this to a larger value, say 100.
numReadsFromFile <- length(varNames/colsPerRead)
for (i in 1:numReadsFromFile)
{
tempdf <- rxImport(inData = "C:/MyRData/data.csv", varsToKeep = paste(varNames[((i-1)*colsPerRead)+1:(((i-1)*colsPerRead)+1)+colsPerRead], sep = ","),
rowsPerRead = 10000)
rxDataFrameToXdf(data = tempdf, ouFile = "C:/MyRData/data.xdf", append = "cols")
}