我有两个字符变量(对象的名称),我想提取最大的公共子字符串.
a <- c('blahABCfoo', 'blahDEFfoo')
b <- c('XXABC-123', 'XXDEF-123')
Run Code Online (Sandbox Code Playgroud)
我想要以下结果:
[1] "ABC" "DEF"
Run Code Online (Sandbox Code Playgroud)
作为输入的这些向量应该给出相同的结果:
a <- c('textABCxx', 'textDEFxx')
b <- c('zzABCblah', 'zzDEFblah')
Run Code Online (Sandbox Code Playgroud)
这些例子具有代表性.字符串包含标识元素,每个向量元素中的其余文本是常见的,但未知.
是否有解决方案,在以下某个地方(按优先顺序):
基地R.
推荐套餐
CRAN上提供的软件包
假设重复的答案不符合这些要求.
有没有人知道R包解决了最长的常见子串问题?我正在寻找可以对矢量起作用的快速的东西.
您知道有什么现成的方法可以获取两个字符串的长度和重叠吗?然而只有与R,也许有什么来自stringr?我正在寻找这里,不幸的是没有成功。
str1 <- 'ABCDE'
str2 <- 'CDEFG'
str_overlap(str1, str2)
'CDE'
str_overlap_len(str1, str2)
3
Run Code Online (Sandbox Code Playgroud)
其他例子:
str1 <- 'ATTAGACCTG'
str2 <- 'CCTGCCGGAA'
str_overlap(str1, str2)
'CCTG'
str_overlap_len(str1, str2)
4
Run Code Online (Sandbox Code Playgroud)
///
str1 <- 'foobarandfoo'
str2 <- 'barand'
str_overlap(str1, str2)
'barand'
str_overlap_len(str1, str2)
6
Run Code Online (Sandbox Code Playgroud)
/// 是的,两个解决方案,总是选择总是重叠
str1 <- 'EFGABCDE'
str2 <- 'ABCDECDE'
str_overlap(str1, str2)
'ABCDE'
str_overlap_len(str1, str2)
5
Run Code Online (Sandbox Code Playgroud)
我想知道是否有自制的小功能,比如这个?