Не существует метода as.list.POSIXlt
, поэтому используется as.list.default
, который выполняет следующее:
if (typeof(x) == "list") x else .Internal(as.vector(x, "list"))
Поскольку typeof
вашего x
равно list
, вышеприведенное выражение возвращаетсам x
, без изменений.
Похоже, что POSIXlt
объекты не являются атомарными и не являются векторами - они являются списками.
unclass(x)
is(unclass(x)) # list
as.data.frame(unclass(x)) # to illustrate the POSIXlt way of storing dates
Так как объект POSIXlt
являетсяуже список, преобразующий его в список, не приводит к изменениям.
Это отличается от POSIXct
.
> x2 <- as.POSIXct(Sys.time() - 0:2)
> as.list(x2)
[[1]]
[1] "2018-05-19 22:25:57 EEST"
[[2]]
[1] "2018-05-19 22:25:56 EEST"
[[3]]
[1] "2018-05-19 22:25:55 EEST"
Так что если вам нужно такое преобразование, вы можете использовать вместо него POSIXct.