布尔表达式 - 如果 2 个或更多条件为真

Boolean expression - if 2 or more conditions True

我正在尝试根据某些条件创建一个 dplyr 过滤器,假设有三个条件,condition1、condition2 和 condition3。 如果任何两个或多个条件为真,我希望它总体评估为真,

知道如何在 R 中轻松地做到这一点吗?我可以用每种条件组合做出很长的表达,但希望更简单,

非常感谢

编辑:

请求的 Reprex

df %>%
filter(condition1|condition2|condition2)

我想要 df 的子集,其中两个或更多以上条件为真

这是一个 dplyr 方法。你也可以使用 rowwisec_across 如果你想对它进行严格的 tidyverse-y。

library(dplyr)

df <- tibble(a = c(T, T, F), b = c(F, T, T), c = c(T, F, F))

df
# A tibble: 3 x 4
  a     b     c     truth_ct
  <lgl> <lgl> <lgl>    <dbl>
1 TRUE  FALSE TRUE         2
2 TRUE  TRUE  FALSE        2
3 FALSE TRUE  FALSE        1
df %>% 
  mutate(truth_ct = rowSums(.)) %>% 
  filter(truth_ct >= 2)

# A tibble: 2 x 4
  a     b     c     truth_ct
  <lgl> <lgl> <lgl>    <dbl>
1 TRUE  FALSE TRUE         2
2 TRUE  TRUE  FALSE        2

rowwise方法:

df %>% 
  rowwise() %>% 
  mutate(truth_ct = sum(c_across(a:c))) %>% 
  filter(truth_ct >= 2)

使用reduce

library(dplyr)
library(purrr)
df %>% 
   filter(reduce(cur_data(), `+`) >=2)
# A tibble: 2 x 3
  a     b     c    
  <lgl> <lgl> <lgl>
1 TRUE  FALSE TRUE 
2 TRUE  TRUE  FALSE