gpt4 book ai didi

列表中的 POSIXct 日期范围

转载 作者:行者123 更新时间:2023-12-05 00:33:39 26 4
gpt4 key购买 nike

考虑以下 POSIXct 日期列表:

times <- list(as.POSIXct(c("2012-07-26 00:30", "2012-07-26 6:20",
"2012-07-26 10:40", "2012-07-26 15:50")),
as.POSIXct(c("2012-07-26 01:15", "2012-07-26 10:10",
"2012-07-26 15:15", "2012-07-26 18:50")),
as.POSIXct(c("2012-07-26 00:35", "2012-07-26 15:05",
"2012-07-26 19:36", "2012-07-26 22:32")),
as.POSIXct(c("2012-07-26 03:34", "2012-07-26 16:43",
"2012-07-26 21:44", "2012-07-26 23:45")))

如果我做:
range(times[[1]])

我正确地得到:
[1] "2012-07-26 00:30:00 CEST" "2012-07-26 15:50:00 CEST"

现在,如果我这样做:
range(times[c(1,3)])

无论出于何种原因,R 决定将 POSIXct 对象转换为时间戳并给我
[1] 1343255400 1343334720

然后我尝试通过执行以下操作将它们重新转换为 POSIXct:
as.POSIXct(range(times[c(1,3)]), origin="1970-01-01 00:00")

而且,奇怪的是,我提前 1 小时得到了范围:
[1] "2012-07-25 23:30:00 CEST" "2012-07-26 21:32:00 CEST"

所以我必须这样做:
as.POSIXct(range(times[c(1,3)]), origin="1970-01-01 01:00")

要获得正确的范围:
[1] "2012-07-26 00:30:00 CEST" "2012-07-26 22:32:00 CEST"

我是否遗漏了什么或某处有错误?

最佳答案

times[[1]]是一个向量,而 times[c(1,3)]是一个列表。在调用 range 之前将后者转换为向量一切都很好。

您不想使用 unlist虽然,因为它只会返回一个原子向量(range 必须在内部做类似的事情),但你可以使用 do.call :

range(do.call(c,times[c(1,3)]))

您使用 as.POSIXct 获得的差异可能是由于时区问题。

关于列表中的 POSIXct 日期范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11671135/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com