2010-03-20 12 views
7

Ho quello che potrebbe essere una domanda molto semplice. Voglio elaborare una colonna di oggetti POSIXct da un dataframe e generare un vettore di stringhe datetime. Ho provato a usare la seguente chiacchierata sontuosaUso saply sul vettore di POSIXct

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

ma senza successo. Continuo a ricevere il seguente errore:

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

Quando applico questa funzione per un singolo oggetto POSIXct dalla colonna, non ho alcun problema. Quindi sono perplesso al momento su quale sia il problema. Devo fare qualcosa di speciale con gli oggetti POSIXct?

+0

@Chris, apportando alcune modifiche minori. Non esitare a effettuare il rollback se ti opponi a qualcosa che ho fatto. I migliori saluti. – bernie

+0

Grazie Adam. Apprezzo il tuo chiarimento. – Chris

risposta

12

format() prenderà un argomento vettore, quindi format(df$datetime,"%Y-%m-%dT%H:%M:%S") dovrebbe fare quello che ti serve.

Quando si utilizza tranquillamente, gli oggetti vengono convertiti in caratteri numerici e pertanto viene invocato il metodo di formattazione errato. Potresti costringerli a POSIXct utilizzando sapply(df$datetime, function(x) format(as.POSIXct(x, origin="1970-01-01"),"%Y-%m-%dT%H:%M:%S")), ma se non hai un motivo particolare per utilizzare apply, usa semplicemente il metodo sopra

+0

Mille grazie Leo! Risposta davvero semplice. – Chris