我有一个数据框,其中一个列中有基因座名称,另一个列中有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个用于序列?)。关于如何做到这一点的任何建议?或者更好的主意?
由于
答案 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