У меня есть (1) кадр данных со многими столбцами (df
), (2) вектор символов, элементы которого могут быть или не быть именами столбцов фрейма данных (search_for_these
) и (3) символ, содержащий строки, которые должны заменить каждый элемент вышеупомянутого вектора, если кадр данных содержит указанный столбец (replace_with_these
).Условное переименование столбцов фрейма данных
df <- data.frame(
dat = rep(1:2),
bat = seq(1:2),
cat = c("foo","bar"))
search_for_these <- c("dat", "bat", "shoe", "box")
replace_with_these <- c("cow", "bat2", "shoes", "boxes")
Моя цель состоит в том, чтобы заменить любой элемент search_for_these
найден в colnames(df)
со значением, полученным в том же индексе replace_with_these
. Желаемый результат Поэтому:
df <- data.frame(
cow = rep(1:2),
bat2 = seq(1:2),
cat = c("foo","bar"))
Я думал использовать dplyr::contains()
для этого, но это не ясно, как на самом деле осуществить это.
Простой, прозрачный! – QuestionAnswer
@QuestionAnswer Спасибо за комментарий. Вы также можете проверить [здесь] (http://stackoverflow.com/help/someone-answers) – akrun
Когда я реализую это с моими фактическими данными, я нахожу, что colnames (df) [i1] содержит переменные, найденные по индексам в [i1]. Они не обязательно совпадают с индексами имен столбцов, которые необходимо заменить. Другими словами, colnames (df) [i1] показывает неправильные переменные, потому что [i1] является индексом из ** вектора **. Таким образом, colnames (df) [i1] <- replace_with_these [i1] заменяет неправильные значения в именах кодов (df). – QuestionAnswer