我有一个8个字母的DNA序列列表,例如:
GGAGACAA
GGATACAA
AATCAGTC
ACACCTGG
Run Code Online (Sandbox Code Playgroud)
我想选择位置上至少2个字母不同于其他所有行的所有行.理想情况下,我想保留3,4和1或2行(但不关心哪一行).但至少,我想保留3和4.最重要的是,没有包含的线与任何其他保留线只有一个位置基差.
你会怎么做?R,grep/gawk是我常用的工具,但我无法弄清楚如何使用那些看似简单的任务.
ETA-第一和第二行只有一个字母彼此不同(G与第四位的T).这就是为什么我不想保留它们的原因.有大约65,000个可能的8个碱基的组合,所以我的大多数(~4000行)列表应该满足这2个不同于所有其他行标准的字母.我很难弄清楚如何找到那些没有的人.
该stringdist封装具有功能stringdistmatrix和许多不同的距离度量.
> library(stringdist)
> stringdistmatrix(x, x)
[,1] [,2] [,3] [,4]
[1,] 0 1 7 7
[2,] 1 0 6 7
[3,] 7 6 0 5
[4,] 7 7 5 0
Run Code Online (Sandbox Code Playgroud)
现在由您决定"2个字母不同"的意思!