首页 > 解决方案 > 保留在同一行中有两个字符串的行

问题描述

在这样的数据框中:

df <- data.frame(id = c(1,2,3), text = c("hi my name is E","hi what's your name","name here"))

我想保留一行同时包含 hi 和 name 单词的行。消耗的输出示例:

df <- data.frame(id = c(1,2,3), text = c("hi my name is E","hi what's your name"))

我试试这个,但它不能正常工作:

library(tidyverse)
df %>%
    filter(str_detect(text, 'name&hi'))

标签: r

解决方案


一个简单的答案和两个更复杂的答案,只有当你有超过 2 个单词要检查时,你才真正需要

library(tidyverse)

df %>% 
  filter(str_detect(text, 'hi') & str_detect(text, 'name'))

df %>% 
  filter(rowSums(outer(text, c('hi', 'name'), str_detect)) == 2)

df %>% 
  filter(reduce(c('hi', 'name'), ~ .x & str_detect(text, .y), .init = TRUE))

推荐阅读