Переименование всех столбцов в пакете — dplyr

#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