0

“我加载了一个从 Gencode 创建的 TxDb 对象并查询它的外显子,然后我使用 lapply 从每个具有 >1 外显子的转录本中获取所有 LAST 外显子:

#Load db:
Gencode <- loadDb("gencode.v39.basic.annotation.sqlite")

#Exons by transcript
Exons <- exonsBy(Gencode, by = "tx", use.names=TRUE)

#Get Exon Counts
ExonCount <- as.data.frame(elementNROWS(Exons))

#Get the last exon for every transcript
lapply(1:nrow(ExonCount), function(x) Exons[[x]][ExonCount$`elementNROWS(Exons)`[x]])

接下来,我想对这些范围执行操作。如shift()或任何其他。但是我收到警告:

(函数(类,fdef,mtable)中的错误:无法找到签名“列表”的函数“调整大小”的继承方法</p>

我的问题是,我怎样才能让这个对象恢复为可以使用 Granges 函数操作的格式?

或者,我怎样才能以一种避免这个问题的方式获得每个转录本的最终外显子?

4

1 回答 1

0

我不知道如何以另一种方式查询最终外显子,但我确实找到了重新格式化 lapply 输出的方法:

我的尝试是将lapply()函数中的每个单独元素连接回 Granges 对象:

  #Function to take each element in the list objects and put concatenate into a GRanges Object:

ListOfGRangesToGRangeList <- function(ListToConvert) {
  ConvertedObject <- GRangesList(ListToConvert[[1]], ListToConvert[[2]])
  for (x in 3:length(ListToConvert)){
    ConvertedObject <- GRangesList(unlist(ConvertedObject), ListToConvert[[x]])
    ConvertedObject <- unlist(ConvertedObject)
  }
  return(ConvertedObject)

或者

ListOfGRangesToGRangeList <- function(ListToConvert) {
  ConvertedObject <- c(ListToConvert[[1]], ListToConvert[[2]])
  for (x in 3:length(ListToConvert)){
    ConvertedObject <- c(ConvertedObject, ListToConvert[[x]])
  }
  return(ConvertedObject)
于 2021-12-13T20:32:59.007 回答