从DNAStringSet子集定义的组

时间:2019-01-22 10:26:00

标签: r match subset

我想从我的aDNAStringSet <- DNAStringSet(c("GCATCCATTAC", "AATCGCCATCC", "GCATACCTTAC", "GCATACCTTAC", "GCATACCTTAC")) 中检索几个序列。到目前为止,我只设法获得一个序列。

例如: 我想要分离的DNAStringset和序列的列表/模式。

测试集:

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有效,但仅适用于单个序列。

---------------------- matchsapply不起作用:-------

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

match

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

{{1}}

我想要只包含“ seq2”,“ seq4”,“ seq5”的字符串集,对吗? 谢谢 K

1 个答案:

答案 0 :(得分:1)

你可以

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