相关疑难解决方法(0)

R中最长的公共子串查找两个字符串之间的非连续匹配

我有一个关于在R中找到最长公共子字符串的问题.在StackOverflow上搜索几个帖子时,我了解了qualV包.但是,我看到这个包中的LCS函数实际上找到了string1中存在的所有字符,即使它们不是连续的.

为了解释,如果字符串字符串1:" HEL LO"字符串2:" HEL 12345lo"我希望可以将输出为HEL,但是我得到的输出为hello.我一定做错了什么.请参阅下面的代码.

library(qualV)
a= "hello"
b="hel123l5678o" 
sapply(seq_along(a), function(i)
    paste(LCS(substring(a[i], seq(1, nchar(a[i])), seq(1, nchar(a[i]))),
              substring(b[i], seq(1, nchar(b[i])), seq(1, nchar(b[i]))))$LCS,
          collapse = ""))
Run Code Online (Sandbox Code Playgroud)

我也尝试了Rlibstree方法,但我仍然得到不连续的子串.此外,子串的长度也与我的预期不同.请参阅下文.

> a = "hello"
> b = "h1e2l3l4o5"

> ll <- list(a,b)
> lapply(data.frame(do.call(rbind, ll), stringsAsFactors=FALSE), function(x) getLongestCommonSubstring(x))
$do.call.rbind..ll.
[1] "h" "e" "l" "o"

> nchar(lapply(data.frame(do.call(rbind, ll), stringsAsFactors=FALSE), function(x) getLongestCommonSubstring(x)))
do.call.rbind..ll.
                21
Run Code Online (Sandbox Code Playgroud)

r lcs

14
推荐指数
3
解决办法
6237
查看次数

R - 最长的共同子串

有没有人知道R包解决了最长的常见子串问题?我正在寻找可以对矢量起作用的快速的东西.

string substring r longest-substring

8
推荐指数
1
解决办法
4160
查看次数

查找字符串中重叠的长度

您知道有什么现成的方法可以获取两个字符串的长度和重叠吗?然而只有与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)

我想知道是否有自制的小功能,比如这个

string r bioinformatics overlap dna-sequence

5
推荐指数
1
解决办法
3073
查看次数

确定一个共同的模式

是否有(容易)识别两个字符串共有的共同模式的可能性?这里有一个小例子来说明我的意思:

我有两个包含字符串的变量.两者都包括相同的模式("ABC")和一些"噪音".

a <- "xxxxxxxxxxxABCxxxxxxxxxxxx"
b <- "yyyyyyyyyyyyyyyyyyyyyyyABC"
Run Code Online (Sandbox Code Playgroud)

让我说我不知道​​常见的模式,我希望R找出两个字符串都包含"ABC".我怎样才能做到这一点?

*编辑

第一个例子可能有点简单化.这是我的真实数据的一个例子.

a <- "DUISBURG-HAMBORNS"
b <- "DUISBURG (-31.7.29)S"
Run Code Online (Sandbox Code Playgroud)

两个字符串都包含"DUISBURG",我希望函数能够识别.

*编辑

我在评论中发布的链接中提出了解决方案.但我仍然没有我想要的.

library(qualV)
LCS(strsplit(a[1], '')[[1]],strsplit(b[1], '')[[1]])$LCS

[1] "D" "U" "I" "S" "B" "U" "R" "G" "-" " " " " "S"
Run Code Online (Sandbox Code Playgroud)

如果函数正在寻找两个向量的最长公共子序列,为什么它不会停止"D" "U" "I" "S" "B" "U" "R" "G"?.

string r lcs

2
推荐指数
1
解决办法
1171
查看次数

Bioconductor与CRAN

今天我发现除了CPAN之外还有另一个存储库.该存储库是Bioconductor.到目前为止,我注意到Bioconductor的安装过程与传统的CRAN相比略有不同install.packages().当我想使用Bioconductor的一些包装时,我应该担心吗?是否有可能陷入一些依赖性问题(如混合使用例如ubuntu/debian存储库等)等?我问,因为例如说:

如果你不介意使用bioconductor包,那么,你可以使用...

Bioconductor或其他可能的存储库有什么问题?

r repository bioconductor cran

2
推荐指数
1
解决办法
973
查看次数