Utilizzando sapply sul vettore di POSIXct
Domanda
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 cercato di usare la seguente chiamata sapply
dt <- sapply(df$datetime, function(x) format(x,"%Y-%m-%dT%H:%M:%S"))
, ma senza alcun risultato. 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. Così sto perplesso al momento circa quale sia il problema. Ho bisogno di fare qualcosa di speciale con gli oggetti POSIXct?
Soluzione
format()
avrà un argomento vettore, in modo
format(df$datetime,"%Y-%m-%dT%H:%M:%S")
dovrebbe fare ciò che è necessario.
Quando si utilizza sapply, gli oggetti sono costretti a numerico, e quindi il metodo formato sbagliato sia invocata. Si potrebbe costringere di nuovo al 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 una ragione speciale per usare apply
, basta utilizzare il metodo di cui sopra