【发布时间】:2017-04-02 08:39:31
【问题描述】:
我有一个由制表符分隔的数据集,所以我想将以下数据集转换为矩阵
CATGGGGAAAACTGA
CCTCTCGATCACCGA
CCTATAGATCACCGA
CCGATTGATCACCGA
CCTTGTGCAGACCGA
我以前用过
rbind(strsplit("CATGGGGAAAACTGA","")[[1]],
strsplit("CCTCTCGATCACCGA","")[[1]],
strsplit("CCTCTCGATCACCGA","")[[1]],
strsplit("CCTATAGATCACCGA","")[[1]],
strsplit("CCGATTGATCACCGA","")[[1]],
strsplit("CCTTGTGCAGACCGA","")[[1]])
这会产生:
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14] [,15]
[1,] "C" "A" "T" "G" "G" "G" "G" "A" "A" "A" "A" "C" "T" "G" "A"
[2,] "C" "C" "T" "C" "T" "C" "G" "A" "T" "C" "A" "C" "C" "G" "A"
[3,] "C" "C" "T" "C" "T" "C" "G" "A" "T" "C" "A" "C" "C" "G" "A"
[4,] "C" "C" "T" "A" "T" "A" "G" "A" "T" "C" "A" "C" "C" "G" "A"
[5,] "C" "C" "G" "A" "T" "T" "G" "A" "T" "C" "A" "C" "C" "G" "A"
[6,] "C" "C" "T" "T" "G" "T" "G" "C" "A" "G" "A" "C" "C" "G" "A"
但是当数据集非常大时,这个过程很累人。我怎么能自动完成呢?
【问题讨论】:
-
使用
do.call:类似于do.call("rbind", lapply(myDNAVec, strsplit, split=""))。 -
序列长度是否固定,始终为 15?
-
@lmo 不需要
lapply。strsplit(myDNAvec, split = '')会起作用。 -
@KonradRudolph 谢谢。
lapply创建了一个不必要的嵌套,并且可能会产生额外的开销。do.call(rbind, strsplit(myDNAvec, split = ''))更好。
标签: r string split bioinformatics