dplyr:传递列名以汇总函数内部

dplyr:传递列名以汇总函数内部,r,dataframe,dplyr,R,Dataframe,Dplyr,我有以下示例,其中我将一个简单的数据帧传递给一个汇总列的函数。汇总列的名称,s,我希望将其作为函数的参数: df <- data.frame(id = c(1,1,1,1,1,2,2,2,2,2), a=c(1:10), b=c(10:19)) sum <- function(df, s){ df <- df %>% group_by(id) %>% summarize(s

我有以下示例,其中我将一个简单的数据帧传递给一个汇总列的函数。汇总列的名称,
s
,我希望将其作为函数的参数:

df <- data.frame(id = c(1,1,1,1,1,2,2,2,2,2),
                 a=c(1:10),
                 b=c(10:19))

sum <- function(df, s){
  df <- df %>% 
    group_by(id) %>%
    summarize(s = sum(a))
  return(df)
}

sum(df = df, s = "summarizing.column.label")

如果我们传递的是一个带引号的参数,那么一个选项是在
摘要
之后,我们使用
重命名

sumf <- function(df, s){

df %>% 
    group_by(id) %>%
    summarize(a = sum(a))%>%
     rename_at("a", ~ s) 


 }

sumf(df, s  ="summarizing.column.label" )
# A tibble: 2 x 2
#     id summarizing.column.label
#  <dbl>                    <int>
#1  1.00                       15
#2  2.00                       40

sumf(df, s  ="a" )
# A tibble: 2 x 2
#     id     a
#   <dbl> <int>
#1  1.00    15
#2  2.00    40
或在
摘要中

sumf <- function(df, s){

 df %>% 
   group_by(id) %>%
    summarise(!!(s) :=  sum(a))
}
sumf%
分组依据(id)%>%
总结(!!(s):=总结(a))
}
sumf(df,s=“summary.column.label”)

试试这个:

sum <- function(df, s){
  df <- df %>% 
    group_by(id) %>%
    summarize(!!s := sum(a))
  return(df)
}
sum%
总结(!!s:=总结(a))
返回(df)
}

我总是想对
a
列进行总结。但是,包含要在中更改的汇总变量的列的名称OP@N08如果您检查原始代码,它是
s=“a”
我编辑它是为了更清楚地表明它是我要更改的汇总列的标签,而不是我认为您的帖子显示的汇总变量(感谢您的快速回复)@N08您是说您对
摘要
“的”论点不再感兴趣了吗?我想我们互相混淆了。我用两个例子更新了OP
sumf <- function(df, s){

 df %>% 
   group_by(id) %>%
    summarise(!!(s) :=  sum(a))
}
sum <- function(df, s){
  df <- df %>% 
    group_by(id) %>%
    summarize(!!s := sum(a))
  return(df)
}