如何在ldply()中使用read_csv指定col_types?

时间:2019-06-27 21:15:57

标签: r

R 3.60,Windows 10

我正在读一堆.csv文件(001.csv ... 332.csv),并将内容读入数据框。我在ldply中使用read_csv完成此操作。它非常有效,除了在某些文件(在默认值1000行之后才无法猜测正确的列类型)上。我可以增加行数,但是我认为更有效的方法是显式定义col_types。

我已经尝试过这样做,但是我找不到正确的编码方式。

这就是我本来的东西。除了文件不能猜测正确的原子类的文件外,它都是有效的,因为直到1000行之后,它都是NA值:

dat_csv = ldply(myfiles, read_csv)

这是到目前为止我尝试过的内容:

dat_csv = ldply(myfiles, read_csv(myfiles, col_names = TRUE, col_types =  
               cols(
               Date = col_date(format = ""),
               sulfate = col_double(),
               nitrate = col_double(),
               ID = col_double()
               )))

我收到此错误:

  

fs [[i]](x,...)中的错误:尝试应用无功能

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

我无法对其进行测试,但我认为您的通话应如下所示:

dat_csv = ldply(
  myfiles, 
  read_csv, 
  col_names = TRUE, 
  col_types = cols(
    Date = col_date(format = ""),
    sulfate = col_double(),
    nitrate = col_double(),
    ID = col_double()
  )
)

您也可以尝试:

dat_csv = ldply(
  myfiles, 
  read_csv, 
  col_names = TRUE, 
  col_types = "Dddd"
)

您只需在对read_csv()的调用中附加ldply函数的参数。该文档指出:

  

ldply(.data,.fun = NULL,...,.progress =“ none”,.inform = FALSE,
  .parallel = FALSE,.paropts = NULL,.id = NA)

其中

  

...其他参数传递给.fun