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)
}