在R中有效地读取大量小文件

时间:2013-11-20 00:19:06

标签: r

我有大约700K的小文件(神鹰日志文件少于10 KB)。文件名没有规则。我使用list.files获取所有文件名,然后使用readLines读取它们,并将它们合并为列表。

目前读取所有文件需要几个小时。这些是我读取日志文件的代码。

rm(list = ls())

base <- 'logs-025'
exts <- c('log', 'out', 'err')

for (i in seq(along = exts))
{
    all_files <- list.files(base, paste0('apsim_.*.', exts[i]), full.names = TRUE)
    res <- NULL
    for (j in seq(along = all_files))
    {
        res_j <- readLines(all_files[j])
        res[[j]] <- res_j
    }
    save(res, file = paste0(Sys.info()['nodename'], '-', exts[i], '.RData'))
}

是否有一种有效的方法来读取R中的大量小文件?

感谢您的任何建议。

干杯, 帮友

1 个答案:

答案 0 :(得分:1)

根据数据集的总大小(即它是否适合内存),您可能希望对文件进行内存映射(例如使用ff package

但总的来说,R的IO功能的性能很差,我建议在C

中编写这些循环