R 如何仅在字符串与多列匹配时筛选行

R 如何仅在字符串与多列匹配时筛选行,r,dplyr,stringr,R,Dplyr,Stringr,我只想在字符串与多列匹配时筛选行。我寻找答案,但没找到。我想我不知道该找什么 那么,假设我有一个这样的tibble library(tibble) tib1 <- tibble(ID = 1:3, Col.1 = c("Hi", "Hello", "ND"), Col.2 = c("Bye", "ND", "ND")) tib1 # A tibble: 3 x 3

我只想在字符串与多列匹配时筛选行。我寻找答案,但没找到。我想我不知道该找什么

那么,假设我有一个这样的tibble

library(tibble)
tib1 <- tibble(ID = 1:3, Col.1 = c("Hi", "Hello", "ND"), Col.2 = c("Bye", "ND", "ND"))
tib1


# A tibble: 3 x 3
     ID Col.1 Col.2
  <int> <chr> <chr>
1     1 Hi    Bye  
2     2 Hello ND   
3     3 ND    ND 
库(TIBLE)
tib1%过滤器(变量(第1列、第2列)、任何变量(str检测(,“ND”))
#一个tibble:2x3
ID第1列第2列
12你好,ND
第二,第三
我该怎么做?我想用tidyverse软件包


谢谢您,祝您愉快。

这应该会给出您想要的输出-将
任何变量
更改为
所有变量
,从而将谓词从
更改为
&

tib1 %>% 
  filter_at(vars(Col.1, Col.2), all_vars(str_detect(., "ND")))
有多个%
行()
过滤器(有多个('ND',c_交叉(第1列:第2列)))
@EJJ的答案将返回所有变量都是“ND”的行

我的代码返回两个或多个(但不一定全部)变量为“ND”的行

当然,在这个例子中,只有两个变量,结果是相同的

tib1 %>% filter_at(vars(Col.1, Col.2), any_vars(str_detect(., "ND")))

# A tibble: 2 x 3
     ID Col.1 Col.2
  <int> <chr> <chr>
1     2 Hello ND   
2     3 ND    ND 
tib1 %>% 
  filter_at(vars(Col.1, Col.2), all_vars(str_detect(., "ND")))