R: dplyr - Переименовать имя столбца по позиции вместо имени

Я хочу знать, есть ли способ переименовать имена столбцов по положению столбца, а не по имени столбца.

Ниже фрагмент кода показывает, как изменить имя.

suppressPackageStartupMessages(library(dplyr))

gd_url  <- "http://tiny.cc/gapminder"
gtbl  <- gd_url %>%
  read.delim %>%
  tbl_df

gtbl  <- gtbl %>% rename(life_exp = lifeExp, 
                         gdp_percap = gdpPercap)
gtbl

person vikas    schedule 12.04.2015    source источник
comment
Итак, как бы вы хотели сделать переименование? Не совсем понятно, какой подход вам нужен.   -  person A5C1D2H2I1M1N2O1R2T1    schedule 12.04.2015
comment
Если вы выберете определенные столбцы и измените имена, вы можете сделать что-то вроде select(gtbl, life_exp = 5).   -  person jazzurro    schedule 12.04.2015
comment
Не проще ли это сделать names(gtbl)[5:6] <- c('life_exp', 'gdp_percap')   -  person akrun    schedule 12.04.2015
comment
@akrun Я бы тоже так сделал.   -  person jazzurro    schedule 12.04.2015
comment
rename() вынуждает вас использовать имена по какой-то причине   -  person hadley    schedule 13.04.2015
comment
Спасибо... Итак, ответ таков: это невозможно сделать (путем dplyr), и для этого есть веская причина :)   -  person vikas    schedule 14.04.2015


Ответы (2)


Гораздо проще: вы можете переименовать столбец, просто используя цифры. Это работает:

df <- df %>% 
        rename(newNameForFirstColumn = 1, newNameForSecondColumn = 2)
person Max Shron    schedule 26.07.2018

Если вы предпочитаете придерживаться мира каналов dplyr, начиная с dplyr 0.7.2 можно переименовывать по позиции, используя следующую номенклатуру:

Используя ваш оригинальный пример:

gtbl  <- gtbl %>% rename("life_exp" = !!names(.[5]),
                         "gdp_percap" = !!names(.[6]))

С уважением, что поднял старый пост. У меня была аналогичная проблема, и я просмотрел этот вопрос, прежде чем выяснить это альтернативное решение.

person Harney    schedule 14.09.2017