我有一个简单的CSV文件,名为"test.csv",内容如下:
colA,colB,colC
1,"x",12
2,"y",34
3,"z",56
假设我想跳过读取colA,只读取colB和colC。 我希望有一种通用的方法来做到这一点,因为我有很多要读取的文件,有时候colA被另外命名,但是colB和colC总是相同的。
根据read_csv文档,实现这个目标的一种方法是传递一个命名列表用于col_types,并且仅命名您想要保留的列:
read_csv('test.csv', col_types = list(colB = col_character(), colC = col_numeric()))
没有提及colA,它应该从输出中删除。然而,生成的数据框是:
Source: local data frame [3 x 3]
colA colB colC
1 1 x 12
2 2 y 34
3 3 z 56
我是做错了什么还是read_csv文档不正确? 根据帮助文件:
如果是一个列表,则必须为每个列指定一个“collector”。 如果您只想读取部分列,则可以使用命名列表(其中名称给出列名称)。 如果未按名称提及某一列,则该列将不包含在输出中。
data.table
的fread
函数有drop
和select
参数,用于此目的,请参考。 - MichaelChiricoreadr::read_csv
甚至还不存在。与此同时,我已经将其作为答案添加了进去,以提供替代read.table
/read.csv
的方法,并因此可以作为重复目标。 - Jaap