Learn R Programming

WGCNA (version 1.61)

mtd.apply: Apply a function to each set in a multiData structure.

Description

Inspired by lapply, these functions apply a given function to each data component in the input multiData structure, and optionally simplify the result to an array if possible.

Usage

mtd.apply(
    # What to do
    multiData, FUN, ..., 

# Pre-existing results and update options mdaExistingResults = NULL, mdaUpdateIndex = NULL, mdaCopyNonData = FALSE,

# Output formatting options mdaSimplify = FALSE, returnList = FALSE,

# Internal behaviour options mdaVerbose = 0, mdaIndent = 0)

mtd.applyToSubset( # What to do multiData, FUN, ...,

# Which rows and cols to keep mdaRowIndex = NULL, mdaColIndex = NULL,

# Pre-existing results and update options mdaExistingResults = NULL, mdaUpdateIndex = NULL, mdaCopyNonData = FALSE,

# Output formatting options mdaSimplify = FALSE, returnList = FALSE,

# Internal behaviour options mdaVerbose = 0, mdaIndent = 0)

Arguments

multiData

A multiData structure to apply the function over

FUN

Function to be applied.

Other arguments to the function FUN.

mdaRowIndex

If given, must be a list of the same length as multiData. Each element must be a logical or numeric vector that specifies rows in each data component to select before applying the function.

mdaColIndex

A logical or numeric vector that specifies columns in each data component to select before applying the function.

mdaExistingResults

Optional list that contains previously calculated results. This can be useful if only a few sets in multiData have changed and recalculating the unchanged ones is computationally expensive. If not given, all calculations will be performed. If given, components of this list are copied into the output. See mdmUpdateIndex for which components are re-calculated by default.

mdaUpdateIndex

Optional specification of which sets in multiData the calculation should actually be carried out. This argument has an effect only if mdaExistingResults is non-NULL. If the length of mdaExistingResults (call the length `k') is less than the number of sets in multiData, the function assumes that the existing results correspond to the first `k' sets in multiData and the rest of the sets are automatically calculated, irrespective of the setting of mdaUpdateIndex. The argument mdaUpdateIndex can be used to specify re-calculation of some (or all) of the results that already exist in mdaExistingResults.

mdaCopyNonData

Logical: should non-data components of multiData be copied into the output? Note that the copying is incompatible with simplification; enabling both will trigger an error.

mdaSimplify

Logical: should the result be simplified to an array, if possible? Note that this may lead to errors; if so, disable simplification.

returnList

Logical: should the result be turned into a list (rather than a multiData structure)? Note that this is incompatible with simplification: if mdaSimplify is TRUE, this argument is ignored.

mdaVerbose

Integer specifying whether progress diagnistics should be printed out. Zero means silent, increasing values will lead to more diagnostic messages.

mdaIndent

Integer specifying the indentation of the printed progress messages. Each unit equals two spaces.

Value

A multiData structure containing the results of the supplied function on each data component in the input multiData structure. Other components are simply copied.

Details

A multiData structure is intended to store (the same type of) data for multiple, possibly independent, realizations (for example, expression data for several independent experiments). It is a list where each component corresponds to an (independent) data set. Each component is in turn a list that can hold various types of information but must have a data component. In a "strict" multiData structure, the data components are required to each be a matrix or a data frame and have the same number of columns. In a "loose" multiData structure, the data components can be anything (but for most purposes should be of comparable type and content).

mtd.apply works on any "loose" multiData structure; mtd.applyToSubset assumes (and checks for) a "strict" multiData structure.

See Also

multiData to create a multiData structure; mtd.applyToSubset for applying a function to a subset of a multiData structure; mtd.mapply for vectorizing over several arguments.