我试图在dplyr(R)中的函数调用中使用group_by,得到了意想不到的结果.下面是我try 做的一个例子:
df = data.frame(a = c(0,0,1,1), b = c(0,1,0,1), c = c(1,2,3,4))
result1 = df %>%
group_by(a,b) %>%
mutate(d = sum(c))
result1$d
myFunc <- function(df, var) {
output = df %>%
group_by(a,!!var) %>%
mutate(d = sum(c))
return(output)
}
result2 = myFunc(df,"b")
result2$d
结果1$d得到[1,2,3,4],这是我所期望的.结果2$d产生了[3,3,7,7],这是我不想要的,我不确定发生了什么.
将b(不带引号)作为函数参数,并用{var}}代替!!不幸的是,在我的例子中,我的列名是字符串格式的(但也许有一种方法可以事先转换字符串,以便它可以使用{}}符号?)