使用管道更改特定列名

Bri*_*ith 3 r dplyr

我想使用 dplyr 的管道更改数据框的几个特定列名。下面是一个这样的例子——

library(dplyr)
head(mtcars)
Run Code Online (Sandbox Code Playgroud)

现在假设,我想分别将第 2 列和第 3 列名称更改为"a""b"。简单地说,我可以这样做

colnames(mtcars)[2] <- "a"
colnames(mtcars)[3] <- "b"
Run Code Online (Sandbox Code Playgroud)

但是我想pipe在一行中使用和 来提高可读性。

任何建议我该怎么做?

非常感谢您的时间。

akr*_*run 6

有了tidyverse,我们可以使用rename_with

library(dplyr)
mtcars <- mtcars %>%
       rename_with(~ c('a', 'b'), 2:3)

names(mtcars)
#[1] "mpg"  "a"    "b"    "hp"   "drat" "wt"   "qsec" "vs"   "am"   "gear" "carb"
Run Code Online (Sandbox Code Playgroud)

我们可以使用replacenames<-

head(mtcars) %>% 
     `names<-`(replace(names(.), 2:3, c('a', 'b')))
Run Code Online (Sandbox Code Playgroud)

-输出

#                   mpg a   b  hp drat    wt  qsec vs am gear carb
#Mazda RX4         21.0 6 160 110 3.90 2.620 16.46  0  1    4    4
#Mazda RX4 Wag     21.0 6 160 110 3.90 2.875 17.02  0  1    4    4
#Datsun 710        22.8 4 108  93 3.85 2.320 18.61  1  1    4    1
#Hornet 4 Drive    21.4 6 258 110 3.08 3.215 19.44  1  0    3    1
#Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02  0  0    3    2
#Valiant           18.1 6 225 105 2.76 3.460 20.22  1  0    3    1
Run Code Online (Sandbox Code Playgroud)