r - 在 R 中查找包含某个字符串的值
问题描述
R中有没有办法在包含单词的列中查找值?例如,我想查找包含单词“the”的所有值,其中列的某些值是“the_cat”和“the_dog”和“dog”
x <- c("the_dog", "the_cat", "dog")
使用上面的示例,答案将是 2。我知道这在 Python 中相对容易做到,但我想知道在 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])"))
推荐阅读
- rust - 如何处理选项> 和选项<&T>
- laravel - 使用 microsoft graph api 将文件上传到 onedrive
- python-3.x - Pydub Split on静默错误:UnboundLocalError:分配前引用的局部变量'start_ii'
- lua - 为什么当这个脚本的组件运行良好但拼凑在一起时却不起作用?这一切可能只是一个问题
- javascript - 使用 Endpoint api-football.com 时出错(CORS 相关)
- java - Java javax.mail.MessagingException:无法连接到 SMTP 主机:smtp.mail.yahoo.com,端口:587
- android - BluetoothLeScanner startScan() 在没有日志的情况下无法工作
- javascript - WP商店定位器的定制
- javascript - 如何在脚本标签内使用ejs
- php - 使用 PHP 重定向并跳过特定参数