Tai yra bendra atminties paskirstymo klaida. Paprastai, problema, kad Revolution R bando skaityti per daug vienu metu iš jūsų duomenų failo duomenis į vieną duomenų dalis atminties.
Pirmą kartą, pamėginkite atlikti šiuos veiksmus, Norėdami išspręsti šią problemą:
Nustatykite mažas argumentas "rowsPerRead" jūsų rxImport() pranešime. Išbandykite "10000" arba mažiau. Jums gali tekti išbandyti skirtingus parametrus
tai rasti reikšmę, kuri veikia gerai ir importuoti duomenis kaip galima greičiau.
Jei tai nepadeda ir csv faile yra daug stulpelių, jis gali padėti importuoti "x" stulpelius vienu metu. Pavyzdžiui, jei jūsų duomenų rinkinio 5000 stulpeliais, galite importuoti 50 stulpelių duomenis tuo metu, ir rašyti duomenis į naują failą XDF 50 stulpelių ir pridėti prie tos esamą XDF failą.
Štai kai kurios kodo pavyzdys R tai padaryti:
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")
}