2016-11-18 3 views
3

У меня есть набор данных, разделенных табуляцией, так что я хочу, чтобы преобразовать следующий набор данных в матрицуПреобразование строки набора данных в матрицу

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" 

Но когда набор данных очень велик, этот процесс изнуряет. Как я могу сделать это автоматически?

+1

use 'do.call': нечто вроде' do.call ("rbind", lapply (myDNAVec, strsplit, split = "")) '. – lmo

+0

Является ли длина последовательности фиксированной, всегда 15? – zx8754

+2

@lmo Не нужно 'lapply'. 'strsplit (myDNAvec, split = '')' будет работать. –

ответ

5

Вы можете использовать read.fwf разделить на отдельные символы:

read.fwf(textConnection("CATGGGGAAAACTGA 
CCTCTCGATCACCGA 
CCTATAGATCACCGA 
CCGATTGATCACCGA 
CCTTGTGCAGACCGA"), rep(1, nchar("CATGGGGAAAACTGA"))) 
# V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 
#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 A T A G A T C A C C G A 
#4 C C G A T T G A T C A C C G A 
#5 C C T T G T G C A G A C C G A 

Вы можете передать имя файла вместо текстового соединения.

Смежные вопросы