Как сказано в 3-м абзаце раздела Подробности ?data.frame
:
'data.frame' преобразует каждый из своих аргументов в кадр данных, вызывая 'as.data.frame(необязательно = TRUE) '.
Это означает, что as.data.frame.POSIXlt
вызывается.Он определяется как:
function (x, row.names = NULL, optional = FALSE, ...)
{
value <- as.data.frame.POSIXct(as.POSIXct(x), row.names,
optional, ...)
if (!optional)
names(value) <- deparse(substitute(x))[[1L]]
value
}
Вот почему это произошло.Я не могу придумать чистого способа сделать это с помощью конструктора data.frame
, но здесь есть небольшой кусочек:
x <- data.frame(d=as.data.frame.vector(my.lt))
Это преобразует ваш POSIXlt
объект в data.frame, используяvector
метод.Если вы действительно хотите потом запутаться, вы также можете использовать метод POSIXct
:
x <- data.frame(d=as.data.frame.POSIXct(my.lt))
str(x)
# 'data.frame': 1 obs. of 1 variable:
# $ my.lt: POSIXlt, format: "2003-02-05 03:00:02"