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"))
我目前正在尝试对一些大型数据文件使用 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"))