Поднабор определенной группы из DNAStringSet - PullRequest
0 голосов
/ 22 января 2019

Я хочу получить пару последовательностей из моего DNAStringSet.Пока мне удается получить только одну последовательность.

Например: набор DNAStringset и список / шаблон последовательностей, которые я хочу выделить.

Набор тестов:

aDNAStringSet <- DNAStringSet(c("GCATCCATTAC", "AATCGCCATCC", "GCATACCTTAC", "GCATACCTTAC", "GCATACCTTAC"))

Имена:

names(aDNAStringSet) <- c("seq1", "seq2", "seq3", "seq4", "seq5") 

Список изолируемых последовательностей:

patterns <- c("seq2", "seq4", "seq5")   

Что я тестировал до сих пор:

selection <- aDNAStringSet [grep("seq2",names(aDNAStringSet ))] 

или

selection <- aDNAStringSet [grep(patterns,names(aDNAStringSet ))]

grep работает, но только для одной последовательности.

---------------------- sapply и match не работает: -------

Использование sapply:

selection <- aDNAStringSet[unlist(sapply(patterns, grep, aDNAStringSet$names)), ]

или использованиеmatch:

selection <-match(c("seq2", "seq4", "seq5"), aDNAStringSet$names)    

Я хочу, чтобы набор строк содержал только "seq2", "seq4", "seq5", есть идеи?Thx K

1 Ответ

0 голосов
/ 22 января 2019

Вы можете сделать

aDNAStringSet[names(aDNAStringSet) %in% patterns]
#  A DNAStringSet instance of length 3
#    width seq                                               names
#[1]    11 AATCGCCATCC                                       seq2
#[2]    11 GCATACCTTAC                                       seq4
#[3]    11 GCATACCTTAC                                       seq5    

Или использовать match

aDNAStringSet[sapply(patterns, function(x) match(x, names(aDNAStringSet)))]
#  A DNAStringSet instance of length 3
#    width seq                                               names
#[1]    11 AATCGCCATCC                                       seq2
#[2]    11 GCATACCTTAC                                       seq4
#[3]    11 GCATACCTTAC                                       seq5

Или, если вы предпочитаете grep (для соответствия регулярному выражению)

aDNAStringSet[sapply(patterns, function(x) grep(x, names(aDNAStringSet)))]
#  A DNAStringSet instance of length 3
#    width seq                                               names
#[1]    11 AATCGCCATCC                                       seq2
#[2]    11 GCATACCTTAC                                       seq4
#[3]    11 GCATACCTTAC                                       seq5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...