【发布时间】:2010-07-06 19:29:27
【问题描述】:
如果您想将format 以外的函数应用于 POSIXct 对象列表怎么办?例如,假设我想取一个时间向量,将这些时间截断为小时,然后对每个时间应用一个任意函数。
> obs.times=as.POSIXct(c('2010-01-02 12:37:45','2010-01-02 08:45:45','2010-01-09 14:45:53'))
> obs.truncated=trunc(obs.times, units="hours")
> obs.truncated
[1] "2010-01-02 12:00:00 EST" "2010-01-02 08:00:00 EST"
[3] "2010-01-09 14:00:00 EST"
现在,我希望 obs.truncated 的长度为 3,但是
> length(obs.truncated)
[1] 9
所以你可以看到尝试apply 一个函数到这个向量是行不通的。 obs.truncated 的类是
> class(obs.truncated)
[1] "POSIXt" "POSIXlt"
知道这里发生了什么吗? apply 和 length 似乎将向量的第一个元素作为自己的列表。
【问题讨论】:
-
不知道为什么会发生这种情况:我运行了你的命令,得到了
length(obs.truncated)== 3...但我从以下得到了 9:length(unclass(obs.truncated))。 -
我正在使用:R 版本 2.10.1 (2009-12-14) x86_64-pc-linux-gnu
-
长话短说:升级到 R 2.11 或使用除 trunc 以外的其他东西,正如 Dirk 在下面所说的那样。