这是常规内存分配错误。常见的问题是革命 R 正试图从数据文件以处理单个数据块的内存中的数据一次读取行数过多。
第一次尝试以下内容,以解决此问题︰
在 rxImport() 语句中设置较小的值为 rowsPerRead 的参数。尝试的值小于或等于"10000"。您可能需要尝试不同的设置
此选项以查找最适合和尽可能快地将数据导入的值。
如果这不起作用,并且 csv 文件中有很多的列,它可以一次导入的 'x' 的数据列。例如,如果为 5000 列数据集,您可以一次导入的 50 列数据并写出到一个新的 XDF 文件 50 列的数据追加到现有 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")
}