【发布时间】:2016-05-11 20:11:02
【问题描述】:
我使用包阅读器。当我用分号分隔符读取 csv 文件时:
library(readr)
read_csv2("A;B\n1.3;alpha\n2.345;beta", col_types = "dc")
这是我得到的答案:
Warning: 2 parsing failures.
row col expected actual
1 A no trailing characters .3
2 A no trailing characters .345
A B
1 NA alpha
2 NA beta
换言之,无法识别数字 1.3 和 2.345。 用逗号分隔一切都很好:
read_csv("A,B\n1.3,alpha\n2.345,beta", col_types = "dc")
A B
1 1.300 alpha
2 2.345 beta
你能重现这个吗?你知道它来自哪里吗? 谢谢你的帮助。
这是我的会话信息:
sessionInfo()
R version 3.2.4 Revised (2016-03-16 r70336)
Platform: i386-w64-mingw32/i386 (32-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1
locale:
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252
[3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C
[5] LC_TIME=English_United States.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] readr_0.2.2
loaded via a namespace (and not attached):
[1] Rcpp_0.12.4
【问题讨论】:
-
来自
?read.csv2:“使用;作为分隔符,而不是,。这在使用,作为小数点分隔符的欧洲国家很常见。” 可以直接试试read_delim(..., delim = ";")? -
当小数点为
,时,它确实可以很好地识别双精度数 -
@HubertL 是的。但我认为 readr 包中的 read_xxx 函数能够自动检测小数点分隔符,所以我希望
read_csv2("A;B\n1.3;alpha\n2.345;beta", col_types = "dc")能够正常工作。 -
它实际上似乎是一个错误,因为它没有考虑语言环境