sun*_*unt 1 datetime r dataframe
> my.lt <- strptime("2003-02-05 03:00:02", format="%Y-%m-%d %H:%M:%S")
> x <- data.frame(d=my.lt)
> class(x$d)
[1] "POSIXct" "POSIXt"
Run Code Online (Sandbox Code Playgroud)
我不知道为什么data.frame将x $ d从POSIXlt对象更改为POSIXct对象.现在,如果我这样做
> x$d = my.lt
Run Code Online (Sandbox Code Playgroud)
然后我得到了我想要的东西,但这很难看.任何人都可以告诉我1)为什么会这样; 2)如何初始化一个数据框,其中一列是一个整齐的POSIXlt.
谢谢.
正如它在详细信息部分的第3段中所述?data.frame:
'data.frame'通过调用'as.data.frame(optional = 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
}
Run Code Online (Sandbox Code Playgroud)
这就是它发生的原因.我想不出使用data.frame构造函数做一个干净的方法,但这里有点像kludge:
x <- data.frame(d=as.data.frame.vector(my.lt))
Run Code Online (Sandbox Code Playgroud)
这POSIXlt会使用该vector方法将对象转换为data.frame .如果你真的想在以后混淆自己,你也可以使用这个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"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2237 次 |
| 最近记录: |