Я пытаюсь изменить имена столбцов на нескольких наборах данных. Я пытался писать следующую функцию, чтобы сделать это:R изменить имена столбцов по нескольким данным
# simplified test data #
df1<-as.data.frame(c("M","F"))
colnames(df1)<-"M1"
# my function #
rename_cols<-function(df){
colnames(df)[names(df) == "M1"] <- "sex"
}
rename_cols(df1)
Однако при тестировании этой функции df1, столбец всегда называется «M1» вместо «секс». Как я могу это исправить?
РЕШЕНИЕ - БЛАГОДАРЯ DAVID Аренберг
rename_cols<-function(df){
colnames(df)[names(df) == "M1"] <- "sex"
df
}
df1<-rename_cols(df1)
Вы пробовали что-то тону «имена (df1) [grepl (« M1 », names (df1)] <-« sex »'? Это найдет имя столбца «M1» и заменит его « sex ". –
Функции работают во временной среде. Ваш код работает, но во временном наборе данных, который затем исчезает. Если вы хотите вернуть набор данных с именами переименованных столбцов, вам нужно добавить дополнительную строку в свою функцию, которая будет иметь 'df' в нем (это означает, что вы хотите, чтобы функция давала вам временные данные, а не стирала их при выходе). Хотя он все равно создаст копию и не изменит ваш исходный набор данных. Интересно, как вы хотите запустить эту функцию на нескольких наборах данных. Можете ли вы предоставить более общий пример и желаемый результат? –
Роман - это альтернатива, но она остается во временной среде. Дэвид - Спасибо, я добавил это выше. – user2568648