R中DNAStringset的子集列表

康拉德·韦伯

沿着我的老问题Subsetting从DNAStringSet中定义了组,我很难对列表执行相同的操作。我所有导致错误的尝试:

Error in .Call2("new_XStringSet_from_CHARACTER", ans_class, ans_elementType, : key 56 (char '8') not in lookup table

工作示例: library("DECIPHER") library("Biostrings")

调用的DNAStringsets列表和调用Biglist的选择项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") 

使用Igrep可以隔离elements,但这不是我想要的:

  newlist<-Biglist[grep("A", names(Biglist))]

使用lapply应该是正确的方法,但是此行会导致错误:

  newlist<-lapply(Biglist, function(y) y[y %in% patterns])

Error in .Call2("new_XStringSet_from_CHARACTER", ans_class, ans_elementType, : key 101 (char 'e') not in lookup table

我也听不懂错误讯息。有任何想法吗?

苏里曼

由于您正在使用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])

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章