Проблема в том, что class(t)
— это «Период», а функция format.Period()
не имеет параметра для format=
. Объект t
не является стандартным объектом стиля POSIXt
, который вы, возможно, привыкли использовать с format()
. Так будут вести себя только функции format.POSIXct()
и format.POSIXlt()
.
Так что, возможно, проще всего было бы определить вспомогательную функцию для превращения класса Period
в POSIXct
. Мы можем сделать это с помощью:
as.POSIXct.Period <- function(x, start=today()) {
X<-as.interval(x, start);
[email protected]+X@start
}
Важно отметить, что POSIXct
— это значение даты/времени, а не просто значение времени. Поэтому по умолчанию мы просто предполагаем, что оно началось сегодня в полночь. Но тогда мы можем использовать формат так, как вы хотели
format(as.POSIXct(t), format="%H:%M:%S")
# [1] "14:11:49"
Должен признать, что я не являюсь опытным пользователем lubridate
, поэтому, возможно, я упустил из виду очевидную функцию, но кажется, что возможности форматирования lubridate
классов в "красивые" форматы очень ограничены.
person
MrFlick
schedule
04.09.2014