簡體   English   中英

R 中 DNAStringset 的子集列表

[英]Subsetting list of DNAStringset in R

沿着我的舊問題從 DNAStringSet 中子集定義的組,我在為列表做同樣的事情時遇到了麻煩。 我所有導致錯誤的嘗試:

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

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

名為Biglist的 DNAStringsets 列表和名為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我能夠隔離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])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM