dplyr包的函数参数

时间:2017-01-10 00:25:28

标签: r function dplyr

我的代码如下:

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中的函数。

1 个答案:

答案 0 :(得分:1)

  1. 要从存储在字符串变量中的名称中提取名称,您必须使用as.name

    a<-"Col_Name"

    as.name(a) = Col_Name

  2. 您无法将存储在变量中的列名传递给dplyrselect()等常规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

  3. 尝试使用这些变体。 如果您有疑问,请告诉我。