我的代码如下:
output <- iris %>%
select(Sepal.Length, Sepal.Width, Species) %>%
filter(Sepal.Width < 3) %>%
group_by(Species) %>%
summarise( mean(Sepal.Length) ) %>%
print
# works as expected
# But when I want to write a function like this:
output_function <- function(a, b, c) {
out <- iris %>%
select(a, b, c) %>%
filter(b < 3) %>%
group_by(c) %>%
summarise( mean(a) )
return(out)
}
output_function(Sepal.Length, Sepal.Width, Species)
# does not work as expected
原因很明显,但我不知道如何解决它
当我们使用select,group_by等函数时,我不知道列变量的变量类型。
因此,我不知道如何在这种情况下定义正确的参数,以便它们可以传递给dplyr中的函数。
答案 0 :(得分:1)
要从存储在字符串变量中的名称中提取名称,您必须使用as.name
a<-"Col_Name"
as.name(a) = Col_Name
您无法将存储在变量中的列名传递给dplyr
,select()
等常规group_by()
函数。您必须使用select_()
和group_by_()
代替
a<- "Sepal.Length"
select(iris, as.name(a)) #this will NOT work
select_(iris, as.name(a)) #this will work
尝试使用这些变体。 如果您有疑问,请告诉我。