[Bioc-devel] GenomicRanges List subclass and apply

Hervé Pagès hp@ge@ @ending from fredhutch@org
Mon May 14 20:15:01 CEST 2018


Hi Jack,

You can use

   sapply(seq_along(gr), function(i) print(gr[i]))

instead of

   sapply(gr, print)

But yes, as Michael noted, looping on a GRanges or IRanges object
is generally not efficient and should be avoided. There is almost
always a "vectorized" solution and it's generally much faster.
However, depending on what you are trying to do exactly, coming up
with a "vectorized" solution can be tricky.

Cheers,
H.

On 05/14/2018 07:28 AM, Jack Fu wrote:
> Hey all,
> 
> I think some of the recent changes to GRanges has affected using the
> apply class functions with GRanges objects:
> 
>    o GenomicRanges now is a List subclass. This means that GRanges objects
>         and their derivatives are now considered list-like objects (even though
>         [[ don't work on them yet, this will be implemented in Bioconductor 3.8).
> 
> 
> The following code will throw:
> gr <- GRanges(1, IRanges(1:2, 3:4))
> sapply(gr, print)
> 
> Error in (function (classes, fdef, mtable)  :
>     unable to find an inherited method for function 'getListElement' for
> signature '"GRanges"'
> 
> Access using gr[1], gr[1:2] still works normally.
> Are there any recommendations on a workaround for this issue without
> resorting back to for loops?
> 
> Thanks all,
> Jack
> 
> 	[[alternative HTML version deleted]]
> 
> _______________________________________________
> Bioc-devel at r-project.org mailing list
> https://urldefense.proofpoint.com/v2/url?u=https-3A__stat.ethz.ch_mailman_listinfo_bioc-2Ddevel&d=DwICAg&c=eRAMFD45gAfqt84VtBcfhQ&r=BK7q3XeAvimeWdGbWY_wJYbW0WYiZvSXAJJKaaPhzWA&m=k5vpJVkh58WH_4jBoE8Hcz_bmop9lW6D_bqF-tDiDm8&s=s_wv4S9c-aOZ3KFs8bcPcZL8UJUz0xC6cOi4LMqmkRc&e=
> 

-- 
Hervé Pagès

Program in Computational Biology
Division of Public Health Sciences
Fred Hutchinson Cancer Research Center
1100 Fairview Ave. N, M1-B514
P.O. Box 19024
Seattle, WA 98109-1024

E-mail: hpages at fredhutch.org
Phone:  (206) 667-5791
Fax:    (206) 667-1319



More information about the Bioc-devel mailing list