Rstarts_with 在filter_at 中出现错误(`starts_with()` 必须在*选择*函数中使用。)

Tim*_*imL 2 r dplyr

使用与此类似的数据集:

id <- c("john","paul","george","ringo","mick","dozy","beaky","tich")
allow_a <- c("Y","N","Y","Y","","","Y","")
allow_b <- c("N","","N","","N","N","N","Y")
generic_a <- c("N","","","Y","Y","Y","N","")
generic_b <- c("N","","","N","Y","N","","Y")

df <- data.frame(id, allow_a, allow_b, generic_a, generic_b)
Run Code Online (Sandbox Code Playgroud)

如果我运行带有starts_with函数的东西:

df %>%
select(starts_with("all"))
Run Code Online (Sandbox Code Playgroud)

它工作正常并选择正确的列。但是,如果我尝试:

filter_at(df,
          vars(starts_with("all")),
          any_vars(. == "Y"))
Run Code Online (Sandbox Code Playgroud)

我收到错误Error: `starts_with()` must be used within a *selecting* function. 如果我使用rlang::last_error()跟踪错误我得到:

Backtrace:
  1. dplyr::filter_at(...)
 11. tidyselect::starts_with("all")
 13. tidyselect::peek_vars(fn = "starts_with")
Run Code Online (Sandbox Code Playgroud)

我猜这是已安装软件包的问题,​​但不太确定如何修复它。软件包版本有:

dplyr_0.8.4
tidyselect_1.0.0
Run Code Online (Sandbox Code Playgroud)

有人有什么想法吗?

Tim*_*imL 5

我不完全确定发生了什么,但经过今天的一些测试,发现与包有冲突expss。我不确定为什么starts_with在这里单独列出,但在加载到库contains中时提到:expss

\n\n
Loading required package: expss\n\nAttaching package: \xe2\x80\x98expss\xe2\x80\x99\n\nThe following objects are masked from \xe2\x80\x98package:tidyr\xe2\x80\x99:\n\n    contains, nest\n\nThe following objects are masked from \xe2\x80\x98package:data.table\xe2\x80\x99:\n\n    copy, like\n\nThe following objects are masked from \xe2\x80\x98package:dplyr\xe2\x80\x99:\n\n    between, compute, contains, first, last, na_if, recode, vars\n
Run Code Online (Sandbox Code Playgroud)\n\n

不确定如何追溯错误,但如果其他用户遇到相同的错误,这可能会很有用......

\n