簡體   English   中英

使用 tidyselect 函數使用 dplyr 重命名列名

[英]renaming column names with dplyr using tidyselect functions

我正在嘗試使用dplyr::rename和 tidyselect 幫助程序重命名幾列,以使用某些模式來執行此操作。

我怎樣才能讓它發揮作用?

library(tidyverse)

# tidy output from broom (using development version)
(df <- broom::tidy(stats::oneway.test(formula = wt ~ cyl, data = mtcars)))

#> # A tibble: 1 x 5
#>   num.df den.df statistic   p.value method                                      
#>    <dbl>  <dbl>     <dbl>     <dbl> <chr>                                       
#> 1      2   19.0      20.2 0.0000196 One-way analysis of means (not assuming equ~

# renaming
df %>% 
  dplyr::rename(
  .data = .,
  parameter1 = dplyr::matches("^num"),
  parameter2 = dplyr::matches("^denom")
  )
#> Error: Column positions must be scalar

reprex 包(v0.3.0.9001) 於 2020 年 1 月 12 日創建

你的代碼對我來說很好用,但是這里有一些其他更短的方法可以幫助你,你可以嘗試;

library(tidyverse)

# tidy output from broom (using development version)
(df <- broom::tidy(stats::oneway.test(formula = wt ~ cyl, data = mtcars)))

#> # A tibble: 1 x 5
#>   num.df den.df statistic   p.value method                                      
#>    <dbl>  <dbl>     <dbl>     <dbl> <chr>                                       
#> 1      2   19.0      20.2 0.0000196 One-way analysis of means (not assuming equ~

# renaming
df %>% 
  rename(parameter1 = matches("^num"),
         parameter2 = matches("^denom"))

# # A tibble: 1 x 5
# parameter1 parameter2 statistic   p.value method                                               
# <dbl>      <dbl>     <dbl>     <dbl> <chr>                                                
#   1          2       19.0      20.2 0.0000196 One-way analysis of means (not assuming..

df %>% 
  rename(parameter1 = contains("num"),
         parameter2 = contains("denom"))

# # A tibble: 1 x 5
# parameter1 parameter2 statistic   p.value method                                               
# <dbl>      <dbl>     <dbl>     <dbl> <chr>                                                
#   1          2       19.0      20.2 0.0000196 One-way analysis of means (not assuming..

df %>% 
  rename(parameter1 = starts_with("num"),
         parameter2 = starts_with("denom"))

# # A tibble: 1 x 5
# parameter1 parameter2 statistic   p.value method                                               
# <dbl>      <dbl>     <dbl>     <dbl> <chr>                                                
#   1          2       19.0      20.2 0.0000196 One-way analysis of means (not assuming..

我們還可以從named向量rename named

library(dplyr)
library(stringr)
df %>% 
     rename(!!!set_names(names(df)[1:2], str_c('parameter', 1:2)))
# A tibble: 1 x 5
#  parameter1 parameter2 statistic   p.value method                                                  
#       <dbl>      <dbl>     <dbl>     <dbl> <chr>                                                   
#1          2       19.0      20.2 0.0000196 One-way analysis of means (not assuming equal variances)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM