R:dplyr - 按位置而不是名称重命名列名

vik*_*kas 16 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
Run Code Online (Sandbox Code Playgroud)

Max*_*ron 27

更简单:只需使用数字即可重命名列.这有效:

df <- df %>% 
        rename(newNameForFirstColumn = 1, newNameForSecondColumn = 2)
Run Code Online (Sandbox Code Playgroud)


小智 18

如果您希望坚持使用dplyr管道世界,那么从dplyr 0.7.2开始,可以使用以下命名法按位置重命名:

使用您的原始示例:

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

关于挖掘旧帖子的问候.在找出这个替代解决方案之前,我遇到了类似的问题并查看了这个问题.