我想在管道的中间步骤中更改列名称。看来我错过了一些简单的事情。
我能做到:
library(dplyr)
library(purrr)
temp <- starwars[1:5,1:5]
temp <- set_names(temp,c("person",names(temp)[-1]))
这就是我想要的:
temp
#> # A tibble: 5 × 5
#> person height mass hair_color skin_color
#> <chr> <int> <dbl> <chr> <chr>
#> 1 Luke Skywalker 172 77 blond fair
#> 2 C-3PO 167 75 <NA> gold
#> 3 R2-D2 96 32 <NA> white, blue
#> 4 Darth Vader 202 136 none white
#> 5 Leia Organa 150 49 brown light
但我做不到:
temp <- starwars[1:5,1:5] |>
set_names(c("person",names(~.)[-1]))
temp
#> # A tibble: 5 × 5
#> person person person person person
#> <chr> <int> <dbl> <chr> <chr>
#> 1 Luke Skywalker 172 77 blond fair
#> 2 C-3PO 167 75 <NA> gold
#> 3 R2-D2 96 32 <NA> white, blue
#> 4 Darth Vader 202 136 none white
#> 5 Leia Organa 150 49 brown light
于 2024 年 2 月 13 日使用 reprex v2.1.0 创建
谢谢。
你可以:
starwars[1:5,1:5] |>
(\(x) set_names(x, c("person", names(x)[-1])))()
# person height mass hair_color skin_color
# <chr> <int> <dbl> <chr> <chr>
# 1 Luke Skywalker 172 77 blond fair
# 2 C-3PO 167 75 NA gold
# 3 R2-D2 96 32 NA white, blue
# 4 Darth Vader 202 136 none white
# 5 Leia Organa 150 49 brown light