我正在尝试使用从partyfacts读取以下 CSV 文件readr
。
导入出了问题,其实没有问题。
download.file("https://partyfacts.herokuapp.com/download/external-parties-csv/", "partyfacts-external-parties.csv")
df <- readr::read_csv("partyfacts-external-parties.csv", show_col_types = FALSE)
警告:一个或多个解析问题,请调用
problems()
您的数据框获取详细信息,例如:
dat <- 轰隆隆(...)
问题(dat)
让我们看看我们有什么:
nrow(problems(df))
86
problems(df)[1,]
# A tibble:1 × 5 行 col 预期实际文件
<int> <int> <chr> <chr> <chr>
35519 15 17 列 15 列 /home/raffaele/Downloads/external-parties.csv
但实际上并没有任何问题。
第 35519 行是:
BIH,elecglob,292,SNSD,独立社会民主党联盟,独立社会民主党联盟,1998,2014,19.1,2006,,,2019-02-08 19:26:26.193233+00:00,2021-03-12 10:15:38.362019+00:00,30450,292,2019-02-08 19:26:26.296626+00:00
它正确包含 17 列,而不是 15 列。
其余 84 个问题属于相同性质(读取的列数少于预期)且适用类似的推理(源文件中的列数是正确的)。
编辑:我报告的行文本是从文本编辑器中获取的。显然行号与我从 R 中获取的不一样。
文件很大,很难检查。诊断此类问题的一种方法是删除没有问题的行,使文件变小。我这样做了,得到了这个文件,只保留了前两行,第一行显示错误,以及之后的一行(也显示错误):
上面显示的第三行和第四行位于原始文件的第 35440 行左右,如您所见,它们不遵循与上一行相同的格式:缺少最后两个字段。
read.csv()
不会抱怨这个文件,因为据记录,除非您使用 调用它,否则会用空白填充缺失的字段fill = FALSE
。当我这样做时,我收到错误。