[Bioc-devel] mcols<-() behaviour inheriting from Vector vs GRanges
Malcolm Perry
mgperry32 at gmail.com
Mon Jan 4 19:53:31 CET 2016
Hello,
A recent question on the support site (
https://support.bioconductor.org/p/76430/#76460) shows that the mcols
assignment in GRanges (and perhaps others) is subtly different from classes
that purely inherit from Vector (such as GenomicInteractions in the
example), as the GRanges method will implicitly convert a data.frame object
to a "DataFrame".
Is it possible for Vector to have the same behaviour? From the users'
perspective it looks like a bug in the downstream package, and I guess many
people will not spot the obvious fix.
Thanks,
Malcolm
PS Here is a self-contained example just using the core packages and no
external data:
library(S4Vectors)
setClass("CharacterVector",
representation(char_data = "character"),
contains="Vector"
)
setMethod(length, "CharacterVector", function(x) length(x at char_data))
char = new("CharacterVector", char_data=c("one", "two", "three"))
mcols(char) = data.frame(number=1:3) # will fail
mcols(char) = DataFrame(number=1:3) # fine
library(GenomicRanges)
gr = GRanges("chr", IRanges(1, 5))
mcols(gr) = data.frame(name="range1")
[[alternative HTML version deleted]]
More information about the Bioc-devel
mailing list