如何使用as.DNAbin {ape}将DNA序列存储在数据帧中?

时间:2014-01-14 12:30:27

标签: r dna-sequence ape-phylo

我有一个数据框,其中一个列中有基因座名称,另一个列中有DNA序列。我试图使用as.DNAbin{ape}或类似物来创建DNAbin对象。

这里有一些示例数据:

  

x< - 结构(c(" 55548"," 43297"," 35309"," 34468"," ; AATTCAATGCTCGGGAAGCAAGGAAAGCTGGGGACCAACTTCTCTTGGAGACATGAGCTTAGTGCAGTTAGATCGGAAGAGCA&#34 ;,     " AATTCCTAAAACACCAATCAAGTTGGTGTTGCTAATTTCAACACCAACTTGTTGATCTTCACGTTCACAACCGTCTTCACGTT&#34 ;,     " AATTCACCACCACCACTAGCATACCATCCACCTCCATCACCACCACCGGTTAAGATCGGAAGAGCACACTCTGAACTCCAGTC&#34 ;,     " AATTCTATTGGTCATCACAATGGTGGTCCGTGGCTCACGTGCGTTCCTTGTGCAGGTCAACAGGTCAAGTTAAGATCGGAAGA"),. Dim = c(4L,2L))

如果我尝试y <- as.DNA(x) R创建了一种DNAbin对象,其长度为2的4个DNA序列(示例的4行)(我认为是两列),没有标签,当然基础成分也不起作用。

文档不是很清楚,但在玩了woodmouse示例数据后,我认为我需要做的是创建一个矩阵,每个基数作为一列,然后使用as.DNAbin。即在上面的例子中是一个4×84的矩阵(1个列用于基因座名称,83个用于序列?)。关于如何做到这一点的任何建议?或者更好的主意?

由于

1 个答案:

答案 0 :(得分:1)

as.DNAbin的第一个参数应该是包含DNA序列的矩阵或列表,或者是“对齐”类的对象。所以,你的想法是正确的。

鉴于x是原始帖子的结构,下面的代码会准备矩阵y

y <- t(sapply(strsplit(x[,2],""), tolower))
rownames(y) <- x[,1]

然后as.DNAbin(y)显示:

4 DNA sequences in binary format stored in a matrix.

All sequences of same length: 83 

Labels: 55548 43297 35309 34468 

Base composition:
    a     c     g     t 
0.289 0.262 0.205 0.244