如何动态创建空白 GRanges?
How to dynamically creat blank GRanges?
我想创建一个空白的 GRanges(来自包 GenomicRanges)动态对象。
如果我们有两个备选方案,opt1 和 opt2,我们可以静态地写成:
library(GenomicRanges)
GRanges(seqnames=NULL,ranges=NULL,strand=NULL, opt1=NULL, opt2=NULL)
问题是"How can we create the GRanges object dynamically?"。
或者更具体地说,"Is the following functionXX possible?" :
opts=c('opt1','opt2','opt3')
#' dynamic create blank GRanges with optional fields
#' @param opts, a vector containing the colnames of "mcols" of GRanges object
#' @return blank GRanges object
functionXX<-function(opts){
//todo:
}
谢谢!
只有列名是不够的,每个字段都应该有定义的数据类型。
解决方法如下:
opts=c('opt1','opt2','opt3')
tp=list(character(),character(),character())
functionXXX<-function(opts,tp){
names(tp)=opts
df=do.call(data.frame,tp)
gr=GRanges(c(seqnames=NULL,ranges=NULL,strand=NULL))
mcols(gr)=df
gr
}
functionXXX(opts,tp)
#GRanges object with 0 ranges and 3 metadata columns:
# seqnames ranges strand | opt1 opt2 opt3
# <Rle> <IRanges> <Rle> | <character> <character> <character>
#-------
#seqinfo: no sequences
我想创建一个空白的 GRanges(来自包 GenomicRanges)动态对象。
如果我们有两个备选方案,opt1 和 opt2,我们可以静态地写成:
library(GenomicRanges)
GRanges(seqnames=NULL,ranges=NULL,strand=NULL, opt1=NULL, opt2=NULL)
问题是"How can we create the GRanges object dynamically?"。 或者更具体地说,"Is the following functionXX possible?" :
opts=c('opt1','opt2','opt3')
#' dynamic create blank GRanges with optional fields
#' @param opts, a vector containing the colnames of "mcols" of GRanges object
#' @return blank GRanges object
functionXX<-function(opts){
//todo:
}
谢谢!
只有列名是不够的,每个字段都应该有定义的数据类型。
解决方法如下:
opts=c('opt1','opt2','opt3')
tp=list(character(),character(),character())
functionXXX<-function(opts,tp){
names(tp)=opts
df=do.call(data.frame,tp)
gr=GRanges(c(seqnames=NULL,ranges=NULL,strand=NULL))
mcols(gr)=df
gr
}
functionXXX(opts,tp)
#GRanges object with 0 ranges and 3 metadata columns:
# seqnames ranges strand | opt1 opt2 opt3
# <Rle> <IRanges> <Rle> | <character> <character> <character>
#-------
#seqinfo: no sequences