Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在R中使用agrep输出特定长度的字符串_R - Fatal编程技术网

如何在R中使用agrep输出特定长度的字符串

如何在R中使用agrep输出特定长度的字符串,r,R,我有很多DNA序列 我想匹配序列的一部分,并返回一个特定长度的匹配 dataframe df具有以下列: V1和V2 >chr1:61695-62229 aattccaagagtattattgcaccaaaaggcatggacttaaaattcttgatacatgatttcaaaatattttctttaaggtttgaatcagtctatattccctccagcagcgtataaaagtgccaatttctctgatccttagccagtttgggtaataataattgtaaa

我有很多DNA序列

我想匹配序列的一部分,并返回一个特定长度的匹配

dataframe df具有以下列:

V1和V2

>chr1:61695-62229      aattccaagagtattattgcaccaaaaggcatggacttaaaattcttgatacatgatttcaaaatattttctttaaggtttgaatcagtctatattccctccagcagcgtataaaagtgccaatttctctgatccttagccagtttgggtaataataattgtaaaacttttttttctttttttttgagacagagtctccctctgtcgccaggctgaagtgcagtggcgcaatctcggctcactgcaacctccgcctcccggggtcaagctattctcctgcctcagcctcccaagtagctgggactacaggcatgcaccaccatgcccagctaatttttgttatttttagtagagatggagtttccccatgttggacaggatggtctcgatctcttgacctcgtgatccaccctcctcggcctcccaaagtgctgggataacaggcgtgaacaaccatgcccggcctgtaaaactttttcctaatttaacagaaaaataatagtattatattttatcatatttctttgatttcta

>chr1:101718-102194   taaaaataaatgtattaagtatgaacaacaaaaaagctagtaaaggttgaacaacaactatccttaggaaagtggaaataatgtattaataaatatgaaagcaggctagccacggtgactcacatctgtaatcccagcactttgggaggctgaggcaggcagatcacctgaggtcaggagttccagaccagcctggccaacatggtgaaatcttgtctctcctacaaatacaaaaactagccaggcttggttgtgcactcctgtaattcgagctacttgggaggctgaggcaggagaatctcttgaacctgagaggcagaggttgcagtgagccaagatcatgccactgcactccagctggggcaacagagtgacactccatctcaaaataaataaataagaaagcagaaactaataaactagaaaacagaaacatagaactaatttataaatcaaagcactatgccttgaaaaga
我用agrep赢得了比赛

RepeatAlusSequencesdfMatch <- RepeatAlusSequencesdf[agrep("aacctcaaagactggcctca", RepeatAlusSequencesdf[,2],ignore.case = TRUE, max.distance = 0.3), ]

RepeatAlusSequencesdfMatch请参见我上面的评论。我不认为你能用agrep实现你在这里的目标。如果您试图模糊匹配的DNA序列具有可预测的核苷酸插入/删除/替换的数量和位置,那么只需使用一个(或多个)带有捕获组的正则表达式即可提取您需要的内容

如果差异不可预测,并且确实需要模糊匹配,则可以使用如下暴力算法:

  • 将你的每个DNA序列分成随机位置,例如产生不同的146个核苷酸长序列

  • 在生成的序列上使用“阈值”最大距离跑agrep,并选择匹配的序列

  • 从上述集合中,通过连续使用较小的最大距离运行agrep来选择最佳匹配,直到获得感兴趣的匹配

  • 你选择的146个核苷酸序列越多,得到的结果就越准确。如果你想找到最佳匹配,可以使用穷举搜索,从一开始遍历每个DNA序列,将其拆分为146个核苷酸片段,然后运行上述算法,然后从一开始就保留一个核苷酸,选择下一个分区,依此类推,直到最后


    希望这有助于或提供更好的想法。

    您不能像使用grep那样在agrep中捕获群组。你不能说“给我匹配的子字符串”。您会说:“这是一个字符串序列,通过使用最小数量的插入、删除或替换来查找与此模板匹配的字符串”,算法只会返回匹配的字符串。它们的匹配或不匹配是在整个字符串上计算的。如果我让agrep返回匹配,那么我可以将其插入一个新列,然后插入一个适当的grep以返回匹配和146个额外的核苷酸。但是cna I如何让agrep返回匹配?或者是否有另一个包可以返回匹配本身?您只能获得整个匹配序列。“匹配本身”是整个匹配序列。为了更好地理解这一点,谷歌“Levenshtein距离”。