我刚刚安装了最新版本的lubridate(1.7.3),并收到以下错误
> x <- as.POSIXct("2014-06-01 08:21:59 BST")
> for (j in 1:1e4){
dum <- lubridate::force_tz(x, tzone = 'UTC')
}
> for (j in 1:1e8){
dum <- lubridate::force_tz(x, tzone = 'UTC')
}
Error in C_force_tz(time, tz = tzone, roll) :
CCTZ: Unrecognized timezone of the input vector: ""
> j
[1] 580
奇怪的是,如果我在第一次循环后继续使用1e4
,我就无法得到它,如果我从1e8
开始,我就无法得到它。有什么想法吗?
答案 0 :(得分:1)
现在已经在luridate https://github.com/tidyverse/lubridate/commit/c4636354e72ce1e6c427784cca94292b58a9271b的github版本中解决了这个问题。
他们希望本周发布修复
答案 1 :(得分:-1)
我试着按照你说的方式做到这一点,并且循环甚至不会通过所有1e8
值而不会崩溃我的机器(这是非常强大的,所以这是一个惊喜) 。另外,我注意到生成的原始dum
只有一个日期,其余的都是NA
。
这会做你需要的同样的事情吗?我猜你需要用Date
个对象初始化一个向量。它对我来说非常快:
> dum <- rep(lubridate::force_tz(x, tzone = 'UTC'),100000000)
> str(dum)
POSIXct[1:100000000], format: "2014-06-01 08:21:59" "2014-06-01 08:21:59" "2014-06-01 08:21:59" "2014-06-01 08:21:59" ...
> system.time(rep(lubridate::force_tz(x, tzone = 'UTC'),100000000))
user system elapsed
0.31 0.24 0.55