Sto provando a utilizzare lapply in un elenco di frame di dati; ma fallendo nel passare correttamente i parametri (credo).Utilizzo di lapply per modificare i nomi delle colonne di un elenco di frame di dati
Elenco dei frame di dati:
df1 <- data.frame(A = 1:10, B= 11:20)
df2 <- data.frame(A = 21:30, B = 31:40)
listDF <- list(df1, df2,df3) #multiple data frames w. way less columns than the length of vector todos
vettore con i nomi di colonne:
todos <-c('col1','col2', ......'colN')
mi piacerebbe cambiare i nomi delle colonne utilizzando lapply:
lapply (listDF, function(x) { colnames(x)[2:length(x)] <-todos[1:length(x)-1] } )
ma questo doesn cambiare i nomi. Non sto passando i frame di dati stessi, ma qualcos'altro? Voglio solo cambiare i nomi, non restituire il risultato a un nuovo oggetto.
Grazie in anticipo, p.
non avrebbe funzionato a causa della chiamata * R per valore * – jogo
Basta aggiungere un 'x' alla fine' lapply (listDF, la funzione (x) {colnames (x) [2: lunghezza (x)] < -todos [1: length (x) -1]; x}) '. La tua funzione come scritta non ha valore di ritorno. –
Non correlato alla domanda, ma suppongo che '1: length (x) -1' sia un errore comune (a volte non dannoso). La linea destra è '1: (length (x) -1)' (fai attenzione alla precedenza!) – nicola