通过将文本传递给要用作参数的函数来简化R中的可重复代码

时间:2015-10-27 00:52:03

标签: r dplyr

我在这里看了一下StackOverflow的答案,但我想我可能会错过一个术语。这是场景:

我有一个包含多个要报告的多个组的大型数据集。假设这个数据集将某些问题的答案作为列,我想采用特定的列和响应,对答案进行分组并执行计数。基本上,我有一个dplyr过滤器表达式,如下所示:

z <- results %>% filter(AgeGroup %in% c("16-20", "21-25", "26-30")) %>% 
  group_by(AgeGroup) %>% summarize(ageCount=n())

然后我使用xtable()生成一个包含结果的表,并将它们转储到我的Rmarkdown文档中。我想做的是创建一个可以执行此操作的函数,以便我可以执行以下操作

resultPrint <- function(qualifier, groupColumn) {
  return(results %>% filter(qualifier) %>% 
         group_by(groupColumn) %>% summarize(count=n())
}

resultPrint("AgeGroup %in% c(\"16-20\", \"21-25\", \"26-30\")", "AgeGroup")

或某些等价物。

有没有办法在R中这样做?如果可以的话,它会简化我写的很多代码。谢谢!

1 个答案:

答案 0 :(得分:1)

谢谢r2evans!这是我的解决方案:

resultPrint <- function(qualifier, groupColumn) {
  return(results %>% filter_(qualifier) %>%
           group_by_(.dots = groupColumn) %>% summarize(count=n()))
}

filterClause = quote(AgeGroup %in% c("16-20", "21-25", "26-30"))
stuff <- resultPrint(filterClause, quote(AgeGroup))

谢谢!