r - 如何在字符串中找到相同的模式?
问题描述
我想从字符串中提取相同的模式,比如说
a <- "abczzzzz"
b <- "rrrrabckkk"
我想得到“abc”的结果,比如
somefunction(a,b)
> "abc"
已经检查过stringr
包,但是,这些功能都需要我没有的已知模式,并且不可能知道模式的 nchar,所以,我更喜欢最长匹配模式。请指教,谢谢。
更新 - -
事实上,我正在处理一个庞大的数据集,就像我只有传感器的描述一样,想找出它所属的机器名称,而机器名称将是描述中最常见的词。逐字比较是可行的,我仍在寻找更有效的方法。谢谢!答案已经帮助我向前迈进了一大步。
解决方案
我们可以在每个字符处拆分字符串并用于intersect
获取常见的字符串。
intersect(strsplit(a, "")[[1]], strsplit(b, "")[[1]])
#[1] "a" "b" "c"
为了按照要求获得准确的输出,我们可以paste
将它们放在一起。
paste(intersect(strsplit(a, "")[[1]], strsplit(b, "")[[1]]), collapse = "")
#[1] "abc"
如果我们可以使用多个字符串Reduce
(另见此处):
a <- "abczzzzz"
b <- "rrrrabckkk"
c <- "dsaqwabc"
paste(Reduce(intersect, strsplit(c(a, b, c), "")), collapse = "")
#[1] "abc"
推荐阅读
- python - 请更正以下错误我无法在模型中添加数据
- ubuntu-14.04 - 如何修复 Ubuntu 中的 Postgresql-11 安装失败错误
- sql-server - NCHAR 的 Debezium SQL Server 连接器值
- c# - 如何处理'包还原失败。!错误?
- odoo-14 - 如何计算 One2many 字段中的行数
- javascript - 如何自定义/编辑 shopify 管理模板?
- typescript - 为什么 TypeScript 不能断言一系列可空值同时都是非空的?
- python - 如何添加公会用户 Discord
- javascript - 如何使用 D3JS 使用多个数组创建树?
- excel - 从字符串 excel 中检索多个匹配项