lubridate 1.7.3 错误:CCTZ:输入向量的时区无法识别:" "。

8

我刚刚安装了最新版本的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 开始,也无法得到结果。有什么想法吗?


3
我可以使用你的代码重现这个问题。R3.4.4,lubridate - 1.7.3。 - user2957945
3
我相信这个问题在这个提交记录中已经得到解决。 - luigi
2个回答

1

1
现已发布了 lubridate 的新版本(1.7.4),其中包含修复此问题的内容。 - user1165199

-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 

谢谢你的帮助,但上面只是为了尝试获得一个可重现的例子,以证明我认为lubridate中存在一个错误。实际上我并不需要运行上述代码。但听起来你没有遇到同样的错误,只是在循环过程中没有完成?对我来说,在开始1e8循环后不久就崩溃了。 - user1165199

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接