【发布时间】:2021-03-09 14:15:51
【问题描述】:
假设我有一个数据框:
data <- data.frame(w = c(1, 2, 3, 4), x = c(F, F, F, F), y = c(T, T, F, T),
z = c(T, F, F, T), z1 = c(12, 4, 5, 15))
data
#> w x y z z1
#> 1 1 FALSE TRUE TRUE 12
#> 2 2 FALSE TRUE FALSE 4
#> 3 3 FALSE FALSE FALSE 5
#> 4 4 FALSE TRUE TRUE 15
问题
如何过滤所有布尔变量为FALSE 的行?在这种情况下,row 3。
或者换句话说,我想得到一个每行至少有 一个 TRUE 值的数据框。
预期输出
#> w x y z z1
#> 1 1 FALSE TRUE TRUE 12
#> 2 2 FALSE TRUE FALSE 4
#> 3 4 FALSE TRUE TRUE 15
尝试
library(tidyverse)
data %>% filter(x == T | y == T | z == T)
#> w x y z z1
#> 1 1 FALSE TRUE TRUE 12
#> 2 2 FALSE TRUE FALSE 4
#> 3 4 FALSE TRUE TRUE 15
以上是一个可行的选项,但根本不可扩展。使用dplyr's filter()函数有没有更方便的选择?
【问题讨论】: