2010-03-20 16 views
7

Tengo lo que puede ser una pregunta muy simple. Quiero procesar una columna de objetos POSIXct desde un marco de datos y generar un vector de cadenas de fecha y hora. Traté de utilizar la siguiente llamada sapplyUsando sapply en el vector de POSIXct

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

pero fue en vano. Sigo recibiendo el siguiente error:

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

Al aplicar esta función a un único objeto POSIXct de la columna, no tengo ningún problema. Así que estoy perplejo en este momento sobre cuál es el problema. ¿Debo hacer algo especial con los objetos POSIXct?

+0

@Chris, realice algunas ediciones menores. Por favor, siéntase libre de retroceder si se opone a cualquier cosa que haya hecho. Atentamente. – bernie

+0

Gracias Adam. Aprecia tu aclaración. – Chris

Respuesta

12

format() tomará un argumento vectorial, por lo que format(df$datetime,"%Y-%m-%dT%H:%M:%S") debería hacer lo que necesita.

Cuando utiliza sapply, sus objetos son coercionados a numéricos, por lo que se invoca el método de formato incorrecto. Puede forzarlos de nuevo a POSIXct utilizando sapply(df$datetime, function(x) format(as.POSIXct(x, origin="1970-01-01"),"%Y-%m-%dT%H:%M:%S")), pero a menos que tenga un motivo especial para usar apply, simplemente use el método anterior

+0

Muchas gracias Leo! Respuesta muy simple de hecho. – Chris

Cuestiones relacionadas