我目前正在尝试使用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
占据如此多内存的任何想法,即使我包含一个只保留一列的论据?
答案 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"))