如何访问管道中中间步骤的列名称

问题描述 投票:0回答:1

我想在管道的中间步骤中更改列名称。看来我错过了一些简单的事情。

我能做到:

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 创建

谢谢。

r dplyr
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   
© www.soinside.com 2019 - 2024. All rights reserved.