r-如果使用tidyselect contains()选择的列中的*any*为TRUE,则返回TRUE



我有几个变量是布尔值。我想使用mutate((创建一个变量,如果根据列名选择的任何变量也是TRUE,则该变量将为TRUE。

我试过以下几种。

mutate(anyTRUE = if_any(.cols = select(contains("var")), isTRUE(.)))

isTRUE((没有以我希望的方式接收变量。有没有不同的方法来构建它,或者我可以使用不同的函数来获得期望的结果?

谢谢。

删除select-如果我们想使用isTRUE,请使用rowwise,然后使用mutate

library(dplyr)
dat %>%
rowwise %>%
mutate(anyTRUE = if_any(.cols = contains('var'), isTRUE)) %>%
ungroup

或者在没有rowwise的情况下,使用I(与逻辑列相同(

dat %>%
mutate(anyTRUE = if_any(.cols = contains('var'), I))

或者没有任何功能,因为这些都是逻辑

dat %>%
mutate(anyTRUE = if_any(.cols = contains('var')))
var1  var2  var3 anyTRUE
1  TRUE FALSE FALSE    TRUE
2 FALSE  TRUE FALSE    TRUE
3 FALSE FALSE FALSE   FALSE

数据

dat <- data.frame(var1 = c(TRUE, FALSE, FALSE),
var2 = c(FALSE, TRUE, FALSE), var3 = FALSE)

最新更新