像fread和vroom这样的csv阅读器在指定列时是否读取所有列?

像fread和vroom这样的csv阅读器在指定列时是否读取所有列?,r,csv,fread,R,Csv,Fread,我有一个包含许多列的大型csv文件(尺寸为10k x 125)。我想从R中的这个文件中提取两列进行进一步分析。我已经在使用非常快速的包来读取csv(vroom和fread),但它们似乎读取了整个文件,然后删除了我不感兴趣的列。像fread和vroom这样的快速csv阅读器是读取所有列,然后删除我不想要的列,还是只读取我选择的列 我之所以这样问,是因为fread文档中提到了select参数:“要保留的列名或数字向量,去掉其余的。”单词“drop”让我觉得它先读取它们,然后再删除它们 以下是我当前使

我有一个包含许多列的大型csv文件(尺寸为10k x 125)。我想从R中的这个文件中提取两列进行进一步分析。我已经在使用非常快速的包来读取csv(vroom和fread),但它们似乎读取了整个文件,然后删除了我不感兴趣的列。像fread和vroom这样的快速csv阅读器是读取所有列,然后删除我不想要的列,还是只读取我选择的列

我之所以这样问,是因为fread文档中提到了select参数:“要保留的列名或数字向量,去掉其余的。”单词“drop”让我觉得它先读取它们,然后再删除它们

以下是我当前使用的vroom代码:

system.time(vroom(path, col_select =  c("column_1", "column_2")))
Rows: 10,000
Columns: 2
Delimiter: ","
chr [2]: column_1, column_2

Use `spec()` to retrieve the guessed column specification
Pass a specification to the `col_types` argument to quiet this message
   user  system elapsed 
  0.080   0.159   2.636 
Warning message:
In .Internal(gc(verbose, reset, full)) :
  closing unused connection 3 (path/to/file)
以下是带有基准的fread代码:

system.time(fread(path, select = c("column_1", "column_2")))
   user  system elapsed 
  0.057   0.007   0.074 

是什么让你认为
fread
读取所有列然后删除?除了这个可能的重复之外,我没有看到任何东西可以将其区分开来:。在select参数的文档中,它说:“要保留的列名或数字的向量,删除其余的。”单词“drop”如果高度优化的
data.table
读取您告诉它不要读取的列,我会感到惊讶。也许作为一个问题问这个问题是值得去证实的。你的问题的其余部分,除了关于
fread
的暗示之外,似乎是我上面提到的一个骗局。这是有道理的。我可以这样问这个问题吗?