#r #dplyr
Вопрос:
Привет, я хочу заменить все имена столбцов в старом наборе данных «olddata» новыми именами, сохраненными во фрейме данных «новые имена».
В basic R это просто и работает
colnames(olddata) lt;- t(as.vector(newnames))
Однако попытка с dplyr:
olddata lt;- olddata %gt;% rename(vars(everything()), ~t(newnames))
Возвращает ошибку:
Error: Must rename columns with a valid subscript vector. x Subscript has the wrong type `quosures`. ℹ It must be numeric or character.
Что здесь может быть не так?Спасибо!
Комментарии:
1. Это кажется слишком сложным. Чтобы переименовать все столбцы, вы можете использовать
rename_with()
следующее:mtcars %gt;% rename_with(~newnames)
.newnames
быть вектором.2. Как выглядит фрейм данных
"newnames"
?
Ответ №1:
Предполагая , что newnames
это один столбец data.frame
, вы можете преобразовать его в вектор, используя:
newnames %gt;% pull(1)
затем вы можете переименовать свой olddata
с:
olddata lt;- olddata %gt;% rename_with(~ newnames %gt;% pull(1))
Вот некоторые тесты с некоторыми гипотетическими данными:
newnames lt;- data.frame(letters[1:3]) # letters.1.3. # 1 a # 2 b # 3 c olddata lt;- data.frame(col_1 = 1, col_2 = 2, col_3 = 3) # col_1 col_2 col_3 # 1 1 2 3 olddata lt;- olddata %gt;% rename_with(~ newnames %gt;% pull(1)) # a b c # 1 1 2 3