DelayedAbind-class {DelayedArray} | R Documentation

## DelayedAbind objects

### Description

NOTE: This man page is about DelayedArray internals and is provided for developers and advanced users only.

The DelayedAbind class provides a formal representation of a delayed `abind()` operation. It is a concrete subclass of the DelayedNaryOp virtual class, which itself is a subclass of the DelayedOp virtual class:

                              DelayedOp
                                  ^
                                  |
                            DelayedNaryOp
                                  ^
                                  |
                            DelayedAbind

DelayedAbind objects are used inside a DelayedArray object to represent the delayed `abind()` operations carried by the object. They're never exposed to the end user and are not intended to be manipulated directly.

### Usage

    ## S4 method for signature 'DelayedAbind'
    is_noop(x)

    ## S4 method for signature 'DelayedAbind'
    summary(object, ...)

    ## ~ ~ ~ Seed contract ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~

    ## S4 method for signature 'DelayedAbind'
    dim(x)

    ## S4 method for signature 'DelayedAbind'
    dimnames(x)

    ## S4 method for signature 'DelayedAbind'
    extract_array(x, index)

    ## ~ ~ ~ Propagation of sparsity ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~

    ## S4 method for signature 'DelayedAbind'
    is_sparse(x)

    ## S4 method for signature 'DelayedAbind'
    extract_sparse_array(x, index)

### Arguments

`x, object` | A DelayedAbind object.
`index` | See `?extract_array` for a description of the `index` argument.
`...` | Not used.

### See Also

- DelayedOp objects.

- `showtree` to visualize the nodes and access the leaves in the tree of delayed operations carried by a DelayedArray object.

- `extract_array` and `extract_sparse_array`.

### Examples

    ## DelayedAbind extends DelayedNaryOp which extends DelayedOp:
    extends("DelayedAbind")

    ## ---------------------------------------------------------------------
    ## BASIC EXAMPLE
    ## ---------------------------------------------------------------------
    m1 <- matrix(101:128, ncol=4)
    m2 <- matrix(runif(16), ncol=4)
    M1 <- DelayedArray(m1)
    M2 <- DelayedArray(m2)
    showtree(M1)
    showtree(M2)

    M3 <- rbind(M1, M2)
    showtree(M3)
    class(M3@seed)        # a DelayedAbind object

    M4 <- cbind(t(M1), M2)
    showtree(M4)
    class(M4@seed)        # a DelayedAbind object

    ## ---------------------------------------------------------------------
    ## PROPAGATION OF SPARSITY
    ## ---------------------------------------------------------------------
    ## DelayedAbind objects always propagate sparsity (granted that all the
    ## input arrays are sparse).

    sm1 <- sparseMatrix(i=c(1, 1, 7, 7), j=c(1, 4, 1, 4),
                        x=c(11, 14, 71, 74), dims=c(7, 4))
    SM1 <- DelayedArray(sm1)
    sm2 <- sparseMatrix(i=c(1, 1, 4, 4), j=c(1, 4, 1, 4),
                        x=c(11, 14, 41, 44), dims=c(4, 4))
    SM2 <- DelayedArray(sm2)
    showtree(SM1)
    showtree(SM2)
    is_sparse(SM1)        # TRUE
    is_sparse(SM2)        # TRUE

    SM3 <- rbind(SM1, SM2)
    showtree(SM3)
    class(SM3@seed)       # a DelayedAbind object
    is_sparse(SM3@seed)   # TRUE

    SM4 <- cbind(SM2, t(SM1))
    showtree(SM4)
    class(SM4@seed)       # a DelayedAbind object
    is_sparse(SM4@seed)   # TRUE

    M5 <- rbind(SM2, M1)  # 2nd input array is not sparse!
    showtree(M5)
    class(M5@seed)        # a DelayedAbind object
    is_sparse(M5@seed)    # FALSE

    ## ---------------------------------------------------------------------
    ## SANITY CHECKS
    ## ---------------------------------------------------------------------
    stopifnot(class(M3@seed) == "DelayedAbind")
    stopifnot(class(M4@seed) == "DelayedAbind")
    stopifnot(class(SM3@seed) == "DelayedAbind")
    stopifnot(is_sparse(SM3@seed))
    stopifnot(class(SM4@seed) == "DelayedAbind")
    stopifnot(is_sparse(SM4@seed))
    stopifnot(class(M5@seed) == "DelayedAbind")
    stopifnot(!is_sparse(M5@seed))

[Package DelayedArray version 0.20.0 Index]