请考虑以下内容
$ R --vanilla
> as.Date("01 Jan 2000")
Error in charToDate(x) :
character string is not in a standard unambiguous format
但那个日期显然是以标准明确的格式表示的。为什么会出现错误信息?
更糟糕的是,一个模棱两可的日期显然被接受了,没有警告或错误提示,然后被错误地读取!
> as.Date("01/01/2000")
[1] "0001-01-20"
我在[R]标签中搜索并找到了另外28个包含此错误消息的问题。所有解决方案和解决方法都涉及指定格式,如果我没理解错的话。这个问题不同之处在于,我想知道标准的无歧义格式定义在哪里,并且它们是否可以更改?每个人都会收到这些消息吗,还是只有我?也许与语言环境有关?
换句话说,除了需要指定格式之外,是否有更好的解决方案?
> sessionInfo()
R version 2.15.2 (2012-10-26)
Platform: x86_64-w64-mingw32/x64 (64-bit)
locale:
[1] LC_COLLATE=English_United Kingdom.1252
[2] LC_CTYPE=English_United Kingdom.1252
[3] LC_MONETARY=English_United Kingdom.1252
[4] LC_NUMERIC=C
[5] LC_TIME=English_United Kingdom.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
as.Date.character
的函数定义,输入仅经过这两种格式的测试:"%Y-%m-%d"
和"%Y/%m/%d"
。如果它能匹配其中一个格式,似乎被视为“明确无歧义”。 - plannapus?as.Date
的答案非常明显。 它在哪里有所帮助? - Matt Dowlestrptime(xx, f <- "%d $B %Y", tz = "GMT")
或strptime(xx, f <- "%B $d %Y", tz = "GMT")
。 (我并不意味着“month.abb”用于与%B匹配,因为文档说匹配是区域设置特定的。) - IRTFM