我有几个布尔变量。我想使用 mutate() 创建一个变量,如果根据列名选择的任何变量也为 true,则该变量为 TRUE。
我已经尝试过以下方法。
mutate(anyTRUE = if_any(.cols = select(contains("var")), isTRUE(.)))
Run Code Online (Sandbox Code Playgroud)
isTRUE() 没有按照我希望的方式接收变量。是否有不同的 tidyverse 结构方式,或者我可以使用不同的函数来获得所需的结果?
谢谢。
删除select- 如果我们想使用isTRUE,则使用rowwise然后mutate
library(dplyr)
dat %>%
rowwise %>%
mutate(anyTRUE = if_any(.cols = contains('var'), isTRUE)) %>%
ungroup
Run Code Online (Sandbox Code Playgroud)
或者不rowwise使用 ,使用I(与这些逻辑列相同)
dat %>%
mutate(anyTRUE = if_any(.cols = contains('var'), I))
Run Code Online (Sandbox Code Playgroud)
或者没有任何功能,因为这些是合乎逻辑的
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
Run Code Online (Sandbox Code Playgroud)
dat <- data.frame(var1 = c(TRUE, FALSE, FALSE),
var2 = c(FALSE, TRUE, FALSE), var3 = FALSE)
Run Code Online (Sandbox Code Playgroud)