你没有提供数据,所以我创建了一些假数据来演示这个解决方案。您正在寻找的可能是get()
功能。
首先是一些虚假数据
> df1 <- data.frame(animal1 = rep(c('cat','dog'),5),
+ animal2 = c(rep(c('cat','snake','dog'),3), 'dog'),
+ country = c('USA','USA','USA','NK','NK','NK','NK','USA','MEX','MEX'),
+ stringsAsFactors = F)
animal1 animal2 country
1 cat cat USA
2 dog snake USA
3 cat dog USA
4 dog cat NK
5 cat snake NK
6 dog dog NK
7 cat cat NK
8 dog snake USA
9 cat dog MEX
10 dog dog MEX
这是您当前的函数,它提供以下输出:
> f <- function(df, group1, region1) {
+ g1 <- as.name(group1)
+ reg1 <- enquo(region1)
+ x <- filter(df, (!!g1) == !!reg1) %>% select(country)
+ print(x)
+ }
>
> f(df1, 'animal1', 'dog')
country
1 USA
2 NK
3 NK
4 USA
5 MEX
get(df)
我们可以通过简单地添加到您的过滤器功能来修改它。你可以看到它给了我们相同的输出。
> f2 <- function(df, group1, region1) {
+ g1 <- as.name(group1)
+ reg1 <- enquo(region1)
+ x <- filter(get(df), (!!g1) == !!reg1) %>% select(country)
+ print(x)
+ }
>
> f2('df1', 'animal1', 'dog')
country
1 USA
2 NK
3 NK
4 USA
5 MEX