我目前正在尝试为大约 420 个长 DNA 序列(约 2kbp)的相当大的数据集计算 Levenshtein 距离矩阵,因此我无法手动检查它们是否存在编辑距离错误。
详细来说,我想将每个序列与其他序列进行比较,以便我了解我的序列有多远。
我的数据框目前看起来像这样:
Accession Species c1 c2 Sequence
123 xxx y z AGCTGTAC
456 yyy x z CTGATGTC
789 zzz y z TGCATGCG
理想情况下,我想要这样的东西:
123 456 789
123 - y z
456 x - z
789 x y -
其中 x、y 和 z 是编辑距离。
我不知道如何开始解决这个问题,到目前为止我最好的选择是
stringdist::stringdistmatrix()
。我应该建立一个循环吗?如果是这样,知道怎么做吗?
您应该可以直接使用
stringdistmatrix()
:
dat <- data.frame(sequence = c("AGCTGTAC","CTGATGTC","TGCATGCG", "AGCTGTAC"))
stringdist::stringdistmatrix(dat$sequence, method="lv")
#> 1 2 3
#> 2 4
#> 3 5 4
#> 4 0 4 5
创建于 2025-01-08,使用 reprex v2.1.0