showtree {DelayedArray} | R Documentation

## Visualize and access the leaves of a tree of delayed operations

### Description

`showtree` can be used to visualize the tree of delayed operations carried by a DelayedArray object.

Use `nseed`, `seed`, or `path` to access the number of seeds, the seed, or the seed path of a DelayedArray object, respectively.

Use `seedApply` to apply a function to the seeds of a DelayedArray object.

### Usage

    showtree(x, show.node.dim=TRUE)

    nseed(x)            # seed counter
    seed(x)             # seed getter and setter
    path(object, ...)   # path getter and setter

    seedApply(x, FUN, ...)

### Arguments

`x, object` | Typically a DelayedArray object but can also be a DelayedOp object or a list where each element is a DelayedArray or DelayedOp object.
`show.node.dim` | `TRUE` or `FALSE`. If `TRUE` (the default), the nodes dimensions and data type are displayed.
`FUN` | The function to be applied to each leaf in `x`.
`...` | Optional arguments to `FUN` for `seedApply()`. Additional arguments passed to methods for `path()`.

### Value

The number of seeds contained in `x` for `nseed`.

The seed contained in `x` for `seed`.

The path of the seed contained in `object` for `path`.

A list of length `nseed(x)` for `seedApply`.

### See Also

- `simplify` to simplify the tree of delayed operations carried by a DelayedArray object.

- DelayedOp objects.

- DelayedArray objects.

### Examples

    ## ---------------------------------------------------------------------
    ## showtree(), nseed(), and seed()
    ## ---------------------------------------------------------------------
    m1 <- matrix(runif(150), nrow=15, ncol=10)
    M1 <- DelayedArray(m1)
    showtree(M1)
    seed(M1)

    M2 <- log(t(M1[5:1, c(TRUE, FALSE)] + 10))[-1, ]
    showtree(M2)

    ## In the above example, the tree is linear i.e. all the operations
    ## are represented by unary nodes. The simplest way to know if a
    ## tree is linear is by counting its leaves with nseed():
    nseed(M2)  # only 1 leaf means the tree is linear
    seed(M2)

    dimnames(M1) <- list(letters[1:15], LETTERS[1:10])
    showtree(M1)

    m2 <- matrix(1:20, nrow=10)
    Y <- cbind(t(M1[ , 10:1]), DelayedArray(m2), M1[6:15, "A", drop=FALSE])
    showtree(Y)
    showtree(Y, show.node.dim=FALSE)
    nseed(Y)  # the tree is not linear

    Z <- t(Y[10:1, ])[1:15, ] + 0.4 * M1
    showtree(Z)
    nseed(Z)  # the tree is not linear

    ## ---------------------------------------------------------------------
    ## seedApply()
    ## ---------------------------------------------------------------------
    seedApply(Y, class)
    seedApply(Y, dim)

[Package DelayedArray version 0.20.0 Index]