L'utilisation sapply sur le vecteur de POSIXct
Question
J'ai ce qui peut être une question très simple. Je veux traiter une colonne d'objets POSIXct d'une trame de données et de générer un vecteur de chaînes de datetime. J'ai essayé d'utiliser l'appel suivant sapply
dt <- sapply(df$datetime, function(x) format(x,"%Y-%m-%dT%H:%M:%S"))
mais en vain. Je continue à obtenir l'erreur suivante:
> Error in prettyNum(.Internal(format(x, trim, digits, nsmall, width, 3L, :
invalid 'trim' argument
Quand j'applique cette fonction à un seul objet POSIXct de la colonne, je n'ai aucun problème. Donc, je suis perplexe au moment de ce que le problème est. Est-ce que je dois faire quelque chose de spécial avec des objets POSIXct?
La solution
format()
prendra un argument vectoriel, donc
format(df$datetime,"%Y-%m-%dT%H:%M:%S")
devrait faire ce que vous avez besoin.
Lorsque vous utilisez sapply, vos objets sont contraints à numérique, et ainsi la méthode de format incorrect est invoqué. Vous pouvez les forcer à revenir à POSIXct en utilisant sapply(df$datetime, function(x) format(as.POSIXct(x, origin="1970-01-01"),"%Y-%m-%dT%H:%M:%S"))
, mais à moins que vous ayez une raison particulière d'utiliser apply
, il suffit d'utiliser la méthode ci-dessus