在readr :: read_csv

时间:2016-12-22 09:54:37

标签: r csv readr tidyverse

当我使用readr::read_csv读取包含尾随分隔符的CSV文件时,我收到一条警告,表示填写了缺少的列名。以下是重现此警告的简短示例CSV文件的内容(存储在名为example.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'

即使我想用

显式加载3列
read_csv("example.csv", col_types=cols_only(A=col_integer(),
                                            B=col_integer(),
                                            C=col_integer()))

我仍然收到警告信息。

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

2 个答案:

答案 0 :(得分:3)

我认为你不能。从我在文档中看到的内容,cols_only()适用于您已加载的R对象。

但是,fread()库中的data.table函数允许您在读入文件时选择特定的列名称:

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

答案 1 :(得分: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