read_table() 来自 R 中的 readr 包

read_table() from readr package in R

我目前正在尝试对一些大型数据文件使用 readr 包中的 read_table() 函数。我只想要第二列,所以我在函数中使用此参数将所有其他列设置为 NULL:

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

编辑: 上面代码中的第一对和第三对右引号之间应该有一个下划线。

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

对于 read.table(),我尝试了一个类似的论点:colClasses = c("NULL", "character", rep("NULL", 20000) 它可以完美地工作而不会占用过多的内存,但我想使用 read_table 因为它据说更快。关于为什么 read_table 占用这么多内存的任何想法,即使我包含一个只保留一列的参数?

如果只想读取大数据文件的第二列,也可以使用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"))