2016-12-22 36 views
2

当我使用readr::read_csv读取包含尾随分隔符的CSV文件时,我收到一条警告,指出缺少一个列名称。下面是一个简短示例CSV文件的内容以重现此操作警告(存储下面的片段在名为example.csv文件):忽略readr中的尾部分隔符:: read_csv

A,B,C, 
2,1,1, 
14,22,5, 
9,-4,8, 
17,9,-3, 

注意后面的逗号在每一行的末尾。现在,如果我打开这个文件,

read_csv("example.csv") 

我得到以下警告:

Missing column names filled in: 'X4' 

即使我想与

read_csv("example.csv", col_types=cols_only(A=col_integer(), 
              B=col_integer(), 
              C=col_integer())) 

我仍然得到显式地加载只有3列警告信息。

这是预期的行为还是有一些方法可以告诉read_csv它应该忽略除指定的列之外的所有列?或者还有另一种方法来清理这个(显然格式不正确的)CSV,以便尾随分隔符被删除/忽略?

+0

你可以添加一个小例子来说明问题吗?警告是以某种方式影响输出还是仅仅是一个信息? – aosmith

+0

这只是一个警告消息,但即使使用'cols_only',似乎所有列似乎都已导入,这似乎很奇怪。我编辑了我的问题以包含一个小例子CSV文件来显示问题。 – cbrnr

回答

3

我不认为你可以。从我可以在文档中看到,cols_only()是您已经加载中的R对象

然而,从data.tablefread()功能可让您选择具体列名的文件中读取:

DT <- fread("filename.csv", select = c("colA","colB"))

2

下面是错误消息的另一个示例。

> read_csv("1,2,3\n4,5,6", col_names = c("x", "y")) 
Warning: 2 parsing failures. 
row # A tibble: 2 x 5 col  row col expected actual   file expected <int> <chr>  <chr>  <chr>  <chr> actual 1  1 <NA> 2 columns 3 columns literal data file 2  2 <NA> 2 columns 3 columns literal data 

# A tibble: 2 x 2 
     x  y 
    <int> <int> 
1  1  2 
2  4  5 

这里是修复/破解。另请参阅此SOF链接。 Suppress reader parse problems in r

> suppressWarnings(read_csv("1,2,3\n4,5,6", col_names = c("x", "y"))) 
# A tibble: 2 x 2 
     x  y 
    <int> <int> 
1  1  2 
2  4  5 
+0

这[博客文章](http://romainfrancois.blog.free.fr/index.php?post/2009/05/20/Disable-specific-warnings)介绍了如何只捕获特定的警告。可以有用的只是抑制这个特定的警告。 – nevrome

相关问题