0

运行这些时出现错误:

library(lubridate)
dmy_hm("3/10/2010 2:00",tz="Australia/Melbourne")
dmy_hm("2/10/2011 2:00",tz="Australia/Melbourne")

只有我吗?

4

2 回答 2

3

问题是从这些时间点开始的夏令时。从 2010 年 3 月 10 日 2:00 到 2010 年 3 月 10 日 2:59 的任何时间都不存在于该时区。

library(lubridate)
dmy_hm("3/10/2010 1:59",tz="Australia/Melbourne")
#[1] "2010-10-03 01:59:00 EST"
dmy_hm("3/10/2010 2:00",tz="Australia/Melbourne")
#Error: evaluation nested too deeply: infinite recursion / options(expressions=)?
#Error during wrapup: evaluation nested too deeply: infinite recursion / options(expressions=)?
dmy_hm("3/10/2010 2:01",tz="Australia/Melbourne")
#Error: evaluation nested too deeply: infinite recursion / options(expressions=)?
#Error during wrapup: evaluation nested too deeply: infinite recursion / options(expressions=)?
dmy_hm("3/10/2010 2:59",tz="Australia/Melbourne")
#Error: evaluation nested too deeply: infinite recursion / options(expressions=)?
#Error during wrapup: evaluation nested too deeply: infinite recursion / options(expressions=)?
dmy_hm("3/10/2010 3:00",tz="Australia/Melbourne")
#[1] "2010-10-03 03:00:00 EST"

然而, lubridate 应该优雅地处理这个问题,例如, return NA

于 2014-01-08T09:00:26.787 回答
1

我得到错误

Error: evaluation nested too deeply: infinite recursion / options(expressions=)?

使用traceback(),发生错误时的调用堆栈如下所示

...
10: .local_parse(x[new_na])
9: .local_parse(x[new_na])
8: .local_parse(x[new_na])
7: .local_parse(x[new_na])
6: .local_parse(x[new_na])
5: .local_parse(x[to_parse], TRUE)
4: parse_date_time(dates, orders, tz = tz, locale = locale, quiet = quiet)
3: as.POSIXct(parse_date_time(dates, orders, tz = tz, locale = locale, 
     ...
2: .parse_xxx_hms(..., orders = "dmyR", quiet = quiet, tz = tz, 
     ...
1: dmy_hm("2/10/2011 2:00", tz = "Australia/Melbourne")

所以这是一个错误.local_parse,它是在里面定义的parse_date_time。您可以在此处提交错误报告:

https://github.com/hadley/lubridate/issues

于 2014-01-08T09:01:03.680 回答