我想从我的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
有效,但仅适用于单个序列。
---------------------- match
和sapply
不起作用:------- >
使用selection <- aDNAStringSet[unlist(sapply(patterns, grep, aDNAStringSet$names)), ]
:
match
或使用selection <-match(c("seq2", "seq4", "seq5"), aDNAStringSet$names)
:
{{1}}
我想要只包含“ seq2”,“ seq4”,“ seq5”的字符串集,对吗? 谢谢 K
答案 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