【问题标题】:Is there a way to input dplyr::summarise variables? [duplicate]有没有办法输入 dplyr::summarise 变量? [复制]
【发布时间】:2020-03-31 09:10:27
【问题描述】:

这是一个我似乎无法解决的非标准评估问题。我想做一个输入列名并输出摘要的函数。对于此函数,重要的是 summarise(name,...) 可以像这样分配为输入:

mtcars %>% 
  summarise(mpg = mean(mpg))

这行得通:

get <- function(col){
  mtcars %>% 
    summarise(mean = mean({{ col }}))
}

get(mpg)

但这确实不是,而这正是我所需要的。

get <- function(col){
  mtcars %>% 
    summarise({{ col }} = mean({{ col }}))
}

非常感谢任何帮助。

【问题讨论】:

    标签: r dplyr rlang non-standard-evaluation


    【解决方案1】:

    使用:= 表示法分配列名

    library(dplyr)
    
    get_summarised<- function(df, col){
      df %>% summarise({{col}} := mean({{ col }}))
    }
    
    get_summarised(mtcars, mpg)
    #       mpg
    #1 20.09062
    

    【讨论】:

    • 谢谢罗纳克!如果您有涵盖该主题的资源(书籍或网站),我想了解更多相关信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-01
    • 2021-03-24
    相关资源
    最近更新 更多