错误:在将读取器形式0.1.1更新为0.2.0后使用dplyr :: bind_rows时损坏数据帧

Man*_*l R 1 r dplyr readr

我刚刚将readr软件包从版本0.1.1 更新到0.2.0,但现在在抛出错误之前有效的操作.

在更新之前,我使用readr包执行此操作:

file.list <- list.files(<path>, pattern='*.csv')

df.list <- lapply(file.list, read_csv2)
df.list <- lapply(df.list, function(x) x[-1,])
Run Code Online (Sandbox Code Playgroud)

最后一步是必要的,因为我有一些带有特殊字符的长标题,以某种方式导致额外的行被读取.这是另一个问题,但只是删除第一行一直工作到那时.

read_csv2 警告我有关列名称的问题但是,如上所述,我通过删除行来修复:

Warning: 1 parsing failure.
  row col    expected      actual
   1  -- 227 columns 222 columns
Run Code Online (Sandbox Code Playgroud)

然后我继续将所有数据帧绑定到一个dplyr::bind_rows(因为每个.csv具有相同的头).这之前完美无缺,但现在当我这样做时,我得到了

> full.data <- bind_rows(df.list)
Error: corrupt data frame
Run Code Online (Sandbox Code Playgroud)

我没有改变任何其他东西(相同的R版本,相同的RStudio版本,没有更新其他包).有经验的人有什 与read_csv2的工作方式相比,版本0.1.1有任何重大变化.

谢谢

Man*_*l R 6

显然我的问题的原因是因为orginial .csv文件中的readr版本0.2.0空单元格会自动转换为NA.虽然如果所有标题实际上都没有丢失,这可能是你想要99%的时间,但当你的一个列标题为空时,这是相当繁琐的.事实上,我的原始文件确实包含空标题(因为这些文件真的不是你所谓的"整洁").

所以在读完我的.csv文件之后,lapply(file.list, read_csv2)我每个data.frame至少有一个列,它的NA列标题bind_rows(df.list)真的不喜欢.这可能是合理的,NA无论如何都不应该在列标题中.但是,正如这里所指出的,我认为readr应该有一些选项来解决空列标题的存在(或者至少抛出一个有意义的警告),特别是因为它也是我在这里提到的另一个错误的原因.