وهذا خطأ في تخصيص ذاكرة عام. المشكلة المعتادة أن الثورة R تحاول قراءة صفوف كثيرة جداً في وقت واحد من ملف البيانات الخاص بك معالجة البيانات في الذاكرة من أجل قطعة واحدة من البيانات.
جرب ما يلي لحل المشكلة أولاً:
تعيين قيمة صغيرة للوسيطة 'رووسبيريد' في جملة rxImport(). حاول قيمة '10000' أو أقل. قد تحتاج إلى تجربة إعدادات مختلفة
وهذا للبحث عن قيمة التي تعمل بشكل جيد واستيراد البيانات بأسرع ما يمكن.
إذا كان هذا لا يساعد وملف csv الخاص بك يحتوي على العديد من الأعمدة، تساعد استيراد أعمدة البيانات 'x' في كل مرة. على سبيل المثال، إذا كانت ورقة العمل الخاصة بك كأعمدة 5000، قد تحتاج إلى استيراد البيانات للأعمدة 50 في كل مرة وكتابة البيانات للأعمدة 50 إلى ملف إكسدف جديد وإلحاق الملف إكسدف الموجود.
وإليك بعض التعليمات البرمجية العينة 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")
}