r - 从向量中过滤包含字符串的行

标签 r dplyr

我正在寻找一个函数,它接受数据帧列,检查它是否包含来自字符串向量的文本,并在匹配时对其进行过滤(包括部分文本匹配)。

例如,采用以下数据框:

animal     |count
aardvark   |8
cat        |2
catfish    |6
dog        |12
dolphin    |3
penguin    |38
prairie dog|59
zebra      |17

以及以下向量

c("cat", "dog")

我想遍历“动物”列,检查该值是否与向量中的字符串之一完全或部分匹配,并过滤掉不匹配的字符串。生成的数据框将是:

animal     |count
cat        |2
catfish    |6
dog        |12
prairie dog|59

谢谢!

肖恩

最佳答案

使用dplyr,您可以尝试以下操作,假设您的表是df:

library(dplyr)
library(stringr)
animalList <- c("cat", "dog")
filter(df, str_detect(animal, paste(animalList, collapse="|")))

我个人发现,在几个月后检查我的代码时,使用 dplyrstringr 更容易阅读。

关于r - 从向量中过滤包含字符串的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38724690/

相关文章:

r - Dplyr 使用字符串变量作为表达式重命名

r - ggplot 变量/列名称包含空格时出错

string - 将字符添加到数据集中的字符串子集

r - 加载包时屏蔽函数,但不是相反?

R - 有条件的索引位置

R- 如何使用包含因不同变量(列)而异的阈值的查找表来替换低于这些阈值的值?

r - ggplot改变连续y轴值的顺序

r - 使用递增变量循环并改变多个列

r - 使用从 R 上的另一列中提取的信息创建新列

r - 如何在 echarts4r 图上显示标签,但每隔 2 或 3 个条显示一次?