R矩阵的DNA成对距离
在处理DNA时,我们通常需要三角p距离矩阵,它包含序列对之间不相同位点的比例。因此:R矩阵的DNA成对距离,r,matrix,distance,identity,dna-sequence,R,Matrix,Distance,Identity,Dna Sequence,在处理DNA时,我们通常需要三角p距离矩阵,它包含序列对之间不相同位点的比例。因此: 阿格特 AGCTA 阿格塔 收益率: 1 2 2 0.4 3 0.2 0.2 p距离计算在某些R包中可用,但假设我需要使用数字代码(-1,0,1,2),而不是字母(C,T,A,G)。如何从“my.matrix”生成三角形p-距离矩阵 定义DNA矩阵维度 bp=5#DNA基质长度 n=3#DNA基质高度 #建立二元矩阵 嘌呤我不确定你在用my.matrix做什么,但这应该适用于字符或
1 2
2 0.4
3 0.2 0.2
p距离计算在某些R包中可用,但假设我需要使用数字代码(-1,0,1,2),而不是字母(C,T,A,G)。如何从“my.matrix”生成三角形p-距离矩阵
定义DNA矩阵维度
bp=5#DNA基质长度
n=3#DNA基质高度
#建立二元矩阵
嘌呤我不确定你在用my.matrix做什么,但这应该适用于字符或数字
x<-c("AGGTT", "AGCTA", "AGGTA")
y<-do.call("rbind", strsplit(x, ""))
y
[,1] [,2] [,3] [,4] [,5]
[1,] "A" "G" "G" "T" "T"
[2,] "A" "G" "C" "T" "A"
[3,] "A" "G" "G" "T" "A"
z <- apply(y, 1, function(x) colMeans(x != t(y)) )
z
[,1] [,2] [,3]
[1,] 0.0 0.4 0.2
[2,] 0.4 0.0 0.2
[3,] 0.2 0.2 0.0
…这将返回距离矩阵中的第一行
colMeans(y[1,] != t(y))
[1] 0.0 0.4 0.2
谢谢Chris S。我不经常使用apply函数,所以它让我有点困惑。谢谢你的解释!
y[1,] == t(y)
[,1] [,2] [,3]
[1,] TRUE TRUE TRUE
[2,] TRUE TRUE TRUE
[3,] TRUE FALSE TRUE
[4,] TRUE TRUE TRUE
[5,] TRUE FALSE FALSE
colMeans(y[1,] != t(y))
[1] 0.0 0.4 0.2