Список поднабора DNAStringset в R - PullRequest
2 голосов
/ 18 апреля 2019

По моему старому вопросу Поднабор определенной группы из DNAStringSet , у меня проблемы с тем же списком.Все мои попытки привели к ошибке:

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

Рабочий пример: library("DECIPHER") library("Biostrings")

Список наборов DNAString с именем Biglist и выборка с именем patterns IЯ хотел бы позвонить, чтобы получить новый список:

  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

Я также не понимаю массаж ошибок.Есть идеи?

1 Ответ

2 голосов
/ 18 апреля 2019

Поскольку вы работаете с классом 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])
...