gpt4 book ai didi

用于在一组字符串中查找最长的公共(public)起始子字符串的 R 实现

转载 作者:行者123 更新时间:2023-12-04 18:28:57 26 4
gpt4 key购买 nike

这个问题只是要求在 R 中实现以下问题:Find the longest common starting substring in a set of strings (JavaScript)

“这个问题是最长公共(public)子串问题的一个更具体的情况。我只需要在数组中找到最长的公共(public)起始子串”。

所以我只是在寻找这个问题的 R 实现(最好不是在 JavaScript 版本中建议的 for/while 循环方式),如果可能的话,我想把它包装成一个函数,这样我就可以应用于许多组一个数据表。

经过一些搜索,我找不到一个 R 示例,因此这个问题。

示例数据:
我有以下字符向量:

dput(data)
c("ADA4417-3ARMZ-R7", "ADA4430-1YKSZ-R2", "ADA4430-1YKSZ-R7",
"ADA4431-1YCPZ-R2", "ADA4432-1BCPZ-R7", "ADA4432-1BRJZ-R2")

我正在寻找运行算法 在 R 这将找到以下输出: ADA44 .

从我在 JavaScript 接受的答案中看到的,这个想法是首先对向量进行排序,提取第一个和最后一个元素(例如: "ADA4417-3ARMZ-R7""ADA4432-1BRJZ-R2" ,将它们分成单个字符,然后循环它们直到其中一个字符不匹配(希望我是对的)

任何帮助都会很棒!

最佳答案

捎带 Henrik 的回答,Bioconductor 有一个基于 C 的前缀函数和一个基于 R 的函数。基于R的一个是:

lcPrefix <- function (x, ignore.case = FALSE) 
{
x <- as.character(x)
if (ignore.case)
x <- toupper(x)
nc <- nchar(x, type = "char")
for (i in 1:min(nc)) {
ss <- substr(x, 1, i)
if (any(ss != ss[1])) {
return(substr(x[1], 1, i - 1))
}
}
substr(x[1], 1, i)
}
<environment: namespace:Biobase>

...并且不需要 Bioconductor 的任何特殊功能(据我所知)。

--- 引文 ---

Orchestrating high-throughput genomic analysis with Bioconductor. W. Huber, V.J. Carey, R. Gentleman, ..., M. Morgan Nature Methods,
2015:12, 115.

关于用于在一组字符串中查找最长的公共(public)起始子字符串的 R 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28273716/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com