data.table:读入有效的csv

时间:2016-10-04 03:09:48

标签: r data.table

有没有办法在csv上使用data.table / fread会在无效的csv上失败?例如一个3G csv文件,有几行,有5个字段,而不是3.如果不是,还有另一种合理快速的验证方法吗?

3 个答案:

答案 0 :(得分:3)

我发现readr处理奇数文件比fread好一点。指定所需的列,导入时应丢弃任何其他列。例如:

library( readr )
input <- read_csv( file = file.path,
                              col_names = c( "date", "time", "data" ),
                              col_types = cols_only(
                                  date = col_character(),
                                  time = col_character(),
                                  data = col_character()
                              ),
                              trim_ws = TRUE
    )

注意:readr会输出一个警告,告诉您3列是&#34;预期&#34;,但更多的是&#34;找到&#34;在某些方面,但它不会失败。 fread通常会失败,即使您添加select参数以指定仅保留所需的列数。

答案 1 :(得分:0)

正常阅读,然后检查字段数量,看它是否有效。在那之后,你可以做你的工作。

答案 2 :(得分:0)

@ alistaire的评论暗示我使用的是图书馆的过时版本,的确如此。版本1.8.10读入csv没有任何投诉,但版本1.9.6失败并出现错误:

Error in fread("~/bad.csv") :
  Expecting 3 cols, but line 929579 contains text after processing all cols
...

我很高兴有这个功能!