Próbuję użyć lapply na liście ramek danych; ale nie udało się poprawnie przekazać parametrów (chyba).Używanie lapply do zmiany nazw kolumn listy ramek danych
Lista ramek danych:
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
Vector z kolumn nazwami:
todos <-c('col1','col2', ......'colN')
Chciałbym zmienić nazwy kolumn za pomocą lapply:
lapply (listDF, function(x) { colnames(x)[2:length(x)] <-todos[1:length(x)-1] } )
ale to nie robi w ogóle nie zmieniają imion. Czy nie przekazuję samych ramek danych, ale coś innego? Chcę tylko zmienić nazwy, aby nie zwracać wyniku do nowego obiektu.
Z góry dziękuję, str.
nie działa z powodu wywoływania * r poprzez wartość * – jogo
Wystarczy dodać 'x' do końca' lapply (listDF funkcja (x) {colnames (x) [2: długość (x)] < -todos [1: length (x) -1]; x}) '. Twoja funkcja jako zapisana nie ma wartości zwracanej. –
Nie związane z pytaniem, ale myślę, że '1: length (x) -1' jest częstym błędem (czasem nie jest szkodliwy). Właściwa linia to '1: (długość (x) -1)' (uważaj na pierwszeństwo!) – nicola