将包含空格的列名传递给自定义函数内的filter_()

时间:2018-12-29 22:17:19

标签: r lazy-evaluation tidyverse evaluation tibble

谁能告诉我如何使这种功能起作用:

library(tidyverse)
## Testing Data:
dat  <- tibble(without_space=rep(c(0,1),5), `with space`=rep(c(1,0),5))
## Some custom function containing filter:
custom_filter  <- function(data, column, value){
    return(filter_(data, column==value))
}
## Expected Output:
filter(dat, `with space`==0)

## Function Call:
custom_filter(dat, `with space`, 0)

我阅读了一些有关标准和非标准评估的内容,并使用了as.name()quote()等,但是无法正常工作。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

尝试:

library(tidyverse)

custom_filter  <- function(data, column, value) {

  return(filter(data, !! enquo(column) == value))

}