Использование sapply для вектора POSIXct
Вопрос
У меня есть, возможно, очень простой вопрос.Я хочу обработать столбец объектов POSIXct из фрейма данных и сгенерировать вектор строк datetime.Я попытался использовать следующий вызов sapply
dt <- sapply(df$datetime, function(x) format(x,"%Y-%m-%dT%H:%M:%S"))
но безрезультатно.Я продолжаю получать следующую ошибку:
> Error in prettyNum(.Internal(format(x, trim, digits, nsmall, width, 3L, :
invalid 'trim' argument
Когда я применяю эту функцию к одному объекту POSIXct из столбца, у меня не возникает проблем.Так что на данный момент я в тупике относительно того, в чем проблема.Нужно ли мне делать что-то особенное с объектами POSIXct?
Решение
format()
примет векторный аргумент, так что
format(df$datetime,"%Y-%m-%dT%H:%M:%S")
должен делать то, что вам нужно.
Когда вы используете sapply, ваши объекты преобразуются в числовые, и поэтому вызывается неправильный метод format .Вы могли бы принудительно вернуть их к POSIXct, используя sapply(df$datetime, function(x) format(as.POSIXct(x, origin="1970-01-01"),"%Y-%m-%dT%H:%M:%S"))
, но если у вас нет особой причины использовать apply
, просто используйте описанный выше метод