Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using sapply on vector of POSIXct

Tags:

r

sapply

posixct

I have what may be a very simple question. I want to process a column of POSIXct objects from a dataframe and generate a vector of datetime strings. I tried to use the following sapply call

dt <- sapply(df$datetime, function(x) format(x,"%Y-%m-%dT%H:%M:%S"))

but to no avail. I keep getting the following error:

> Error in prettyNum(.Internal(format(x, trim, digits, nsmall, width, 3L,  :
invalid 'trim' argument

When I apply this function to a single POSIXct object from the column, I have no problem. So I'm stumped at the moment about what the problem is. Do I need to do something special with POSIXct objects?

like image 487
Chris Avatar asked Mar 20 '10 05:03

Chris


1 Answers

format() will take a vector argument, so format(df$datetime,"%Y-%m-%dT%H:%M:%S") should do what you need.

When you use sapply, your objects are coerced to numeric, and so the wrong format method is being invoked. You could coerce them back to POSIXct by using sapply(df$datetime, function(x) format(as.POSIXct(x, origin="1970-01-01"),"%Y-%m-%dT%H:%M:%S")), but unless you have a special reason to use apply, just use the method above

like image 141
Leo Alekseyev Avatar answered Sep 19 '22 14:09

Leo Alekseyev