我在表中有一堆序列(即TCGATCGATCGA),我想找到90%匹配的序列。我正在查看RecordLinkage包和函数levenshteinSim。我知道我可以手动导入每个序列并进行比较,但是我有1000多个序列,那么如何获得它来自动比较每一行呢?
答案 0 :(得分:1)
相同的功能在Mako212的链接中,尽管我有时会使用这个软件包,但我想给出一些解释,它可能非常有用。我们将使用levenshteinSim()
包中的RecordLinkage
函数。
包装:
install.packages("RecordLinkage")
library(RecordLinkage)
找到这90%的匹配项:
data <- c("tcgartyu", "tcgart", "tckael", "tcgatcgatc", "tcgatcgatcg")
[1] "tcgartyu" "tcgart" "tckael" "tcgatcgatc" "tcgatcgatcg"
matches <- levenshteinSim('tcgatcgatcga', data)
[1] 0.42 0.42 0.25 0.83 0.92
matches_90 <- matches > 0.9
[1] FALSE FALSE FALSE FALSE TRUE
因此,使用此功能,您将能够获得匹配90%(或在我的示例中更高)的行。然后,您可以按照自己的方式使用这些百分比匹配。
请注意,来自str1
函数的str2
和levenshteinSim()
参数必须是字符向量。
答案 1 :(得分:0)
我建议您查看该字符串距离软件包。具体来说,此stringdist()函数为您提供一个数字输出,该输出与一个字符串与另一个字符串之间的距离有关。您应该能够按照自己的目的进行操作。
https://cran.r-project.org/web/packages/stringdist/stringdist.pdf
最好, 莫斯塔法(Mostafa)