首页 > 解决方案 > 在 R 中查找包含某个字符串的值

问题描述

R中有没有办法在包含单词的列中查找值?例如,我想查找包含单词“the”的所有值,其中列的某些值是“the_cat”和“the_dog”和“dog”

x <- c("the_dog", "the_cat", "dog")

使用上面的示例,答案将是 2。我知道这在 Python 中相对容易做到,但我想知道在 R 中是否有办法做到这一点。谢谢!

标签: r

解决方案


尝试:

sum(grepl("(?<![A-Za-z])the(?![A-Za-z])", x, perl = T))

这在您的示例中给出了 2 的总和。

但让我们也考虑一个稍微复杂一点的例子:

x <- c("the_dog", "the_cat", "dog", "theano", "menthe", " the")

输出:

[1] 3

上面我们尝试匹配the之前或之后没有其他字母的任何字母(例如 eg theano)。

您还可以在[]您不想匹配的其他内容中添加,例如,如果您不考虑the99一个单词the,您会做[A-Za-z0-9]等。

例如,您也可以将上面的内容与 一起使用stringr(我已将数字排除在外,因此以下the99内容不会被视为一个单词):

library(stringr)

sum(str_detect(x, "(?<![A-Za-z0-9])the(?![A-Za-z0-9])"))

推荐阅读