【问题标题】:Use a specific column inside the user defined function for summarize function in dplyr使用用户定义函数中的特定列作为 dplyr 中的汇总函数
【发布时间】:2021-05-07 21:41:41
【问题描述】:

我有以下问题。我有一个数据集 mtcars 我想写一个函数来总结给定的变量,例如mpg 假设另一个变量具有特定值,例如vs = 1。我提供了一个代码,我想总结 mpg 给定 vs = 1 并再次总结给定 am = 1

NextMethod("[") 中的错误:找不到对象'vs'

f_1 <- function(data, var){
  
  # Quote the variable that we can use it's name
  var         <- enquo(var)
  
  data %>%
    summarize(p_1          = mean(!!var[vs  == 1], na.rm = TRUE),
              p_2          = mean(!!var[am  == 1], na.rm = TRUE))
}


f_1(data = mtcars, var = mpg)

【问题讨论】:

    标签: r function dplyr summarize


    【解决方案1】:

    你可以使用 curly-curly ({{..}}) :

    library(dplyr)
    
    f_1 <- function(data, var){
      data %>%
        summarize(p_1 = mean({{var}}[vs  == 1], na.rm = TRUE),
                  p_2 = mean({{var}}[am  == 1], na.rm = TRUE))
    }
    
    f_1(data = mtcars, var = mpg)
    
    #      p_1      p_2
    #1 24.55714 24.39231
    

    【讨论】:

      猜你喜欢
      • 2016-11-30
      • 1970-01-01
      • 2020-11-04
      • 2020-12-27
      • 2014-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多