在连续的块R中使用readLines

时间:2018-06-16 14:04:32

标签: r

我有一个2米+行的文件。

为了避免内存过载,我希望以块的形式读取这些行,然后使用块中的行进行进一步处理。

我读到readLines是最快的,但我找不到用readlines读取块的方法。

raw = readLines(target_file, n = 500)

但我想要的是readLines n = 501:1000,例如。

raw = readLines(target_file, n = 501:1000)

有没有办法在R中执行此操作?

2 个答案:

答案 0 :(得分:1)

也许这有助于未来的人:

readr包正是我正在寻找的:一个以块的形式读取行的函数。

read_lines_chunked以行的行读取文件,然后期望在这些块上运行回调。

f成为存储块以供以后使用所需的函数:

f = function(x, pos){
 filename = paste("./chunks/chunk_", pos, ".RData", sep="")
 save(x, file = filename)
}

然后我可以在主包装器中使用它:

read_lines_chunked(file = target_json
               , chunk_size = 10000
               , callback = SideEffectChunkCallback$new(f)
               )

作品。

答案 1 :(得分:0)

我不知道你有多少变量(列),但data.table::fread是你想要的一个非常快的替代品:

require(data.table)

raw <- fread(target_file)
相关问题