考虑这个 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"
我错过了什么还是某处有错误?