Usando sapply el vector de POSIXct
Pregunta
Tengo lo que puede ser una pregunta muy simple. Quiero procesar una columna de objetos POSIXct de una trama de datos y generar un vector de cadenas de fecha y hora. He intentado utilizar la siguiente llamada sapply
dt <- sapply(df$datetime, function(x) format(x,"%Y-%m-%dT%H:%M:%S"))
pero en vano. Sigo recibiendo el siguiente error:
> Error in prettyNum(.Internal(format(x, trim, digits, nsmall, width, 3L, :
invalid 'trim' argument
Cuando aplico esta función a un único objeto POSIXct de la columna, no tengo ningún problema. Así que estoy confundido por el momento acerca de lo que es el problema. ¿Necesito hacer algo especial con objetos POSIXct?
Solución
format()
tomará un vector argumento, por lo
format(df$datetime,"%Y-%m-%dT%H:%M:%S")
debe hacer lo que necesita.
Cuando se utiliza sapply, sus objetos son obligados a numérico, y así se invoca el método de formato incorrecto. Se podría obligarlos a volver 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 una razón especial para usar apply
, sólo tiene que utilizar el método anterior