3
想象我有POSIXct
對象的輸入向量:遍歷POSIXlt中的R
times.input <- c(
as.POSIXct('2013-01-01 00:00:00', tz='GMT'),
as.POSIXct('2013-01-01 00:00:01', tz='GMT')
)
class(times.input)
# [1] "POSIXct" "POSIXt"
某些功能(如round
或trunc
)變換POSIXct
到POSIXlt
:
unique.dates <- unique(trunc(times.input, 'days')))
class(times.rounded)
# [1] "POSIXlt" "POSIXt"
然後,如果我們嘗試迭代或lapply
這個對象,發生奇怪的事情:
lapply(X=unique.dates, FUN=print)
# [1] 0 0
# [1] 0 0
# [1] 4 4
# [1] 1 1
# [1] 0 0
# [1] 113 113
# [1] 2 2
# [1] 0 0
# [1] 0 0
看起來好像POSIXlt
作爲矢量列表在內部垂直存儲, 並且迭代遍歷內部結構而不是遍歷每個對象。
我知道轉換爲POSIXct
有助於在這種情況下,因爲POSIXct
是作爲一個整數內部存儲的,但我認爲這個解決方案是醜陋的。
所以我的問題是:給定一個POSIXlt[2]
數據輸入,如何執行循環或lapply
超過POSIXct
對象?
你能說清楚,你究竟想要做什麼? 'print(times.round)'適合你的例子。否則,通用建議轉換爲'POSIXct',這可能是最不「醜陋」的解決方案。 – Roland
爲什麼難以脅迫POSIXct?我不明白你的最後一個問題,因爲POSIXlt ... hos能循環什麼? – agstudy
我用'print'代替了複雜的函數來表示問題。在現實世界中,使用了一些像'downloadDataForDate'這樣的函數。 –