Problem: rxImport() - "Det gick inte att allokera XXXXXXXXX byte."

Detta är en allmän minnesallokeringsfel. Vanliga problem är att revolutionen R skulle läsas för många rader samtidigt från datafilen för att bearbeta data i minnet för en enskild del av data.

Först prova följande för att lösa problemet:

Ange ett mindre värde för argumentet 'rowsPerRead' i uttrycket rxImport(). Prova ett värde på "10000" eller mindre. Du kan behöva prova olika inställningar för

Detta för att hitta ett värde som fungerar bra och importerar data så snabbt som möjligt.

 

Om detta inte hjälper och CSV-fil har många kolumner, hjälper det för att importera 'x' datakolumner samtidigt. Till exempel om din datauppsättning som 5000 kolumner, du kanske vill importera data för 50 kolumner samtidigt och skriva ut data för 50 kolumner till en ny XDF-fil och lägga till befintliga XDF filen.

Här är några exempelkod R att göra detta:

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") 
}


Behöver du mer hjälp?

Utöka dina kunskaper
Utforska utbildning
Få nya funktioner först
Anslut till Microsoft Insiders

Hade du nytta av den här informationen?

Tack för din feedback!

Tack för din feedback! Det låter som att det kan vara bra att koppla dig till en av våra Office-supportrepresentanter.

×