2012-12-13 11 views
5

ho elenco di date che hanno codice categoria POSIXct come segue (solo un esempio di lavoro minimo):Tornando un vettore di classe POSIXct con vapply

L <- list(as.POSIXct("2012-12-12 12:12:12"), as.POSIXct("2012-12-12 12:12:12")) 

Ho bisogno di recuperare un vettore di classe POSIXct da esso. Questo esclude lappone e mi lascia con aria sdolcinata e villiosa. Io li applicano come segue:

sapply(L, "[[", 1) 

e restituisce:

[1] 1355310732 1355310732 

Conversione questo vettore per POSIXct dà errore come deve essere fornita origine. Ho anche provato vapply:

vapply(L, "[[", as.POSIXct(Sys.time()), 1) 

ma anche ottenere vettore numerico restituito:

[1] 1355310732 1355310732 

Inoltre non elencati non produce il vettore POSIXct desiderata:

> unlist(L) 
[1] 1355310732 1355310732 

In breve, come faccio a estrarre un elenco di valori POSIXct in un vettore POSIXct?

risposta

10

Che dire di do.call?

L <- list(as.POSIXct("2012-12-12 12:12:12"), as.POSIXct("2012-12-12 12:12:12")) 
do.call(c, L) # Execute function c on a list L of arguments. 
[1] "2012-12-12 12:12:12 CET" "2012-12-12 12:12:12 CET" 
+1

Infatti, come dice il manuale sulla funzione c: "Tutti gli argomenti sono forzati a un tipo comune ...". Grazie. –

+3

Questo potrebbe cambiare il fuso orario se l'elenco originale avesse un attributo tz. L <- list (as.POSIXct ("2012-12-12 12:12:12", tz = "UTC"), as.POSIXct ("2012-12-12 12:12:12", tz = "GMT")) 'che è facile da correggere se tutti i valori tz sono uguali, ad es. di '.POSIXct (do.call (c, L), tz =" UTC ")' ma come si possono mantenere i fusi orari se sono diversi? – sparrow

Problemi correlati