来自R中的readr包的read_table()

时间:2015-08-21 06:29:32

标签: r readr

我目前正在尝试使用readr包中的read_table()函数来处理几个大数据文件。我只想要第二列,所以我在函数中将所有其他列设置为NULL:

col_types = c(paste("_", "c", paste(rep("_", 20000), sep = "", collapse = ""), sep = "", collapse  = ""))

编辑:上面代码中的第1对和第3对封闭引号之间应该有一个underdash。

然而,read_table似乎坚持要读取整个数据文件(并且耗尽过多的内存并导致崩溃),而不是仅仅阅读第2列。

使用read.table(),我尝试了一个类似的论点:colClasses = c("NULL", "character", rep("NULL", 20000)在没有占用多余内存的情况下完美运行但我想使用read_table,因为它应该更快。关于为什么read_table占据如此多内存的任何想法,即使我包含一个只保留一列的论据?

1 个答案:

答案 0 :(得分:4)

如果您只想阅读大数据文件的第二列,还可以使用data.table package中的fread函数。 fread函数也是为(非常)快速读取文件而开发的。

fread有一个select参数,您可以使用该参数确定要加载的列。在你的情况下,它将是这样的:

dt <- fread("name_of_file.csv", select=2)

这仅选择第二列。你也可以给它一个列向量:

dt <- fread("name_of_file.csv", select=c(2,5,10))

或列名称的向量:

dt <- fread("name_of_file.csv", select=c("id","time"))