Самый быстрый способ импортировать миллионы файлов в R?

У меня есть 15 миллионов файлов CSV, каждый из которых имеет два столбца (целое число и число с плавающей запятой) и от 5 до 500 строк. Каждый файл выглядит примерно так:

3453,0.034
31,0.031
567,0.456
...

В настоящее время я перебираю все файлы и использую read.csv()для импорта каждого файла в большой список. Вот упрощенная версия:

allFileNames = Sys.glob(sprintf("%s/*/*/results/*/*", dir))

s$scores = list()

for (i in 1:length(allFileNames)){
        if ((i %% 1000) == 0){
            cat(sprintf("%d of %d\n", i, length(allFileNames)))
        }

        fileName = allFileNames[i]
        approachID = getApproachID(fileName) 
        bugID = getBugID(fileName)

        size = file.info(fileName)$size
        if (!is.na(size) && size > 0){ # make sure file exists and is not empty
            tmp = read.csv(fileName, header=F, colClasses=c("integer", "numeric"))
            colnames(tmp) = c("fileCode", "score")
            s$scores[[approachID]][[bugID]]  = tmp
        } else {
            # File does not exist, or is empty. 
            s$scores[[approachID]][[bugID]] = matrix(-1, ncol=2, nrow=1)
        }
    }

tmp = read.csv(fileName, header=F, colClasses=c("integer", "numeric")

Позже в своем коде я возвращаюсь к каждой матрице в списке и вычисляю некоторые показатели.

Похоже, что после запуска этого процесса импорта он займет от 3 до 5 дней. Есть ли более быстрый способ сделать это?

РЕДАКТИРОВАТЬ: я добавил более подробную информацию о своем коде.

8
задан stepthom 23 March 2012 в 17:15
поделиться