沿着我的老问题Subsetting defined group out of DNAStringSet ,我很难对列表做同样的事情。 我所有的尝试都会导致错误:
.Call2("new_XStringSet_from_CHARACTER", ans_class, ans_elementType, 中出现错误:键 56 (char '8') 不在查找表中
工作示例:
库(“解密”)
库(“Biostrings”)
名为 Biglist
的 DNAStringset 列表和名为 patterns
的选择,我想调用以获取新列表:
aDNAStringSet <- DNAStringSet(c("GCATCCATTAC", "AATCGCCATCC", "GCATACCTTAC", "GCATACCTTAC", "GCATACCTTAC"))
names(aDNAStringSet) <- c("seq1", "seq2", "seq3", "seq4", "seq5")
bDNAStringSet <- DNAStringSet(c("GCATCCATTAC", "AATCGCCATCC", "GCATACCTTAC", "GCATACCTTAC", "GCATACCTTAC"))
names(bDNAStringSet) <- c("seq1", "seq2", "seq3", "seq4", "seq5")
cDNAStringSet <- DNAStringSet(c("GCATCCATTAC", "AATCGCCATCC", "GCATACCTTAC", "GCATACCTTAC", "GCATACCTTAC"))
names(cDNAStringSet) <- c("seq1", "seq2", "seq3", "seq4", "seq5")
dDNAStringSet <- DNAStringSet(c("GCATCCATTAC", "AATCGCCATCC", "GCATACCTTAC", "GCATACCTTAC", "GCATACCTTAC"))
names(dDNAStringSet) <- c("seq1", "seq2", "seq3", "seq4", "seq5")
Biglist<-list(A=aDNAStringSet, B=bDNAStringSet, C=cDNAStringSet, D=dDNAStringSet)
patterns <- c("seq2", "seq4", "seq5")
使用grep
我能够隔离元素
,但这不是我想要的:
newlist<-Biglist[grep("A", names(Biglist))]
使用lapply
应该是正确的方法,但是这一行会导致错误:
newlist<-lapply(Biglist, function(y) y[y %in% patterns])
.Call2("new_XStringSet_from_CHARACTER", ans_class, ans_elementType, 中出现错误:键 101 (char 'e') 不在查找表中
我也不明白错误消息。 有什么想法吗?
最佳答案
由于您正在使用 S4 类,因此,您需要一个不同的子集方法,在本例中为 @
#To use `DNAStringSet` function install Biostrings using the following
#source("http://www.bioconductor.org/biocLite.R")
#biocLite(c("Biostrings"))
#library(Biostrings)
lapply(Biglist, function(x) x[x@ranges@NAMES %in% patterns])
关于r - R 中 DNAStringset 的子集列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55741306/