Wrapping an array-like object (typically an on-disk object) in a DelayedArray
object allows one to perform common array operations on it without loading
the object in memory. In order to reduce memory usage and optimize
performance, operations on the object are either delayed or executed using a
block processing mechanism. Note that this also works on in-memory array-like
objects like DataFrame objects (typically with Rle columns), Matrix objects,
and ordinary arrays and data frames.