【问题标题】:Parameterizing group_by %>% summarise参数化 group_by %>% 总结
【发布时间】:2018-12-14 03:26:34
【问题描述】:

有一个像这样的data.frame:

df <- data.frame("Config" = c("C1","C1","C2","C2"), "SN1" = 1:4, "SN2" = 5:8)

我正在尝试使group_by %&gt;% summarise 更通用。这是一个不起作用的示例:

variable <- "SN1"

df %>%
  group_by(
  Config
  ) %>%
  summarise(
    paste0(variable, ".median")=median(UQ(as.symbol(variable)))
  ) %>%
  as.data.frame() ->
  df_summary

由于paste0(variable, ".median") 部分,它不起作用。

相关问答 Pass arguments to dplyr functions 帮助我参数化了 median(UQ(as.symbol(variable))) 部分,但它没有提到左侧部分。

有没有办法解决上述问题?

【问题讨论】:

    标签: r


    【解决方案1】:

    您可以使用enquo!!

    library(tidyverse)
    
    mysumm <- function(variable){
      var <- enquo(variable)
      df %>%
        group_by(
        Config
        ) %>%
        summarise(!!paste0(variable, ".median") := median(!!var))
    }
    
    mysumm('SN1')
    # # A tibble: 2 x 2
    #   Config SN1.median
    #   <fct>  <chr>     
    # 1 C1     SN1       
    # 2 C2     SN1    
    

    【讨论】:

    • 谢谢。看起来:= 而不是= 也很重要
    猜你喜欢
    • 2018-02-05
    • 2015-09-19
    • 2016-04-07
    • 2019-08-25
    • 2020-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-04
    相关资源
    最近更新 更多