Использование sapply для вектора POSIXct - PullRequest
7 голосов
/ 20 марта 2010

У меня есть очень простой вопрос. Я хочу обработать столбец объектов 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?

1 Ответ

13 голосов
/ 20 марта 2010

format() будет принимать векторный аргумент, поэтому format(df$datetime,"%Y-%m-%dT%H:%M:%S") должен делать то, что вам нужно.

Когда вы используете sapply, ваши объекты приводятся к числовому значению, поэтому вызывается неправильный метод форматирования. Вы можете вернуть их обратно в POSIXct, используя sapply(df$datetime, function(x) format(as.POSIXct(x, origin="1970-01-01"),"%Y-%m-%dT%H:%M:%S")), но если у вас нет особых причин использовать apply, просто используйте метод, описанный выше

...