根据 R 数据帧中因子中缺少单词删除行

Deleting rows according to the absence of a word in factor in R dataframe

我有一个包含文本和作者的数据框。我只需要在一个因子级别清理数据,以保留存在一个单词的所有行。这是一个小例子:

author(factor)   text

John             Pear Plum

Mary             Pear Apple Banana Grapes

Mike             Grapes Apple Peach

John             Banana Pear Apple

John             Apple Melon 

这是我想要得到的结果,删除约翰没有提到苹果这个词的每一行:

author(factor)   text

Mary             Pear Apple Banana Grapes

Mike             Grapes Apple Peach

John             Banana Pear Apple

John             Apple Melon 

这是我试过的:

df$author%in% "John"[!grepl("Apple", df$text, ignore.case = T),,drop = FALSE]

作为响应,我收到一条错误消息:

  Error in "John"[!grepl("Apple", df$text, ignore.case = T),  : 
  incorrect number of dimensions

我查看了有关对数据进行子集化的建议,但找不到与我的情况相似的任何内容。感谢任何帮助。

这个有用吗:

library(dplyr)
library(stringr)
df %>% filter(!(author == 'John' & !str_detect(text, 'Apple')))
# A tibble: 4 x 2
  author text                    
  <chr>  <chr>                   
1 Mary   Pear Apple Banana Grapes
2 Mike   Grapes Apple Peach      
3 John   Banana Pear Apple       
4 John   Apple Melon        

使用的数据:

df
# A tibble: 5 x 2
  author text                    
  <chr>  <chr>                   
1 John   Pear Plum               
2 Mary   Pear Apple Banana Grapes
3 Mike   Grapes Apple Peach      
4 John   Banana Pear Apple       
5 John   Apple Melon