有没有办法在csv上使用data.table / fread会在无效的csv上失败?例如一个3G csv文件,有几行,有5个字段,而不是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)
Error in fread("~/bad.csv") :
Expecting 3 cols, but line 929579 contains text after processing all cols
...
我很高兴有这个功能!