mtd.mapply: Apply a function to elements of given multiData structures.

View source: R/multiData.R

mtd.mapplyR Documentation

Apply a function to elements of given multiData structures.

Description

Inspired by mapply, this function applies a given function to each data component in the input multiData arguments, and optionally simplify the result to an array if possible.

Usage

mtd.mapply(

  # What to do
  FUN, ..., MoreArgs = NULL, 

  # How to interpret the input
  mdma.argIsMultiData = NULL,

  # Copy previously known results?
  mdmaExistingResults = NULL, mdmaUpdateIndex = NULL,

  # How to format output
  mdmaSimplify = FALSE, 
  returnList = FALSE,
  
  # Options controlling internal behaviour
  mdma.doCollectGarbage = FALSE, 
  mdmaVerbose = 0, mdmaIndent = 0)

Arguments

FUN

Function to be applied.

...

Arguments to be vectorized over. These can be multiData structures or simple vectors (e.g., lists).

MoreArgs

A named list that specifies the scalar arguments (if any) to FUN.

mdma.argIsMultiData

Optional specification whether arguments are multiData structures. A logical vector where each component corresponds to one entry of .... If not given, multiData status will be determined using isMultiData with argument strict=FALSE.

mdmaExistingResults

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.

mdmaUpdateIndex

Optional specification of which sets in multiData the calculation should actually be carried out. This argument has an effect only if mdmaExistingResults is non-NULL. If the length of mdmaExistingResults (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 mdmaUpdateIndex. The argument mdmaUpdateIndex can be used to specify re-calculation of some (or all) of the results that already exist in mdmaExistingResults.

mdmaSimplify

Logical: should simplification of the result to an array be attempted? The simplification is fragile and can produce unexpected errors; use the default FALSE if that happens.

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.

mdma.doCollectGarbage

Should garbage collection be forced after each application of FUN?

mdmaVerbose

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

mdmaIndent

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

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).

This function applies the function FUN to each data component of those arguments in ... that are multiData structures in the "loose" sense, and to each component of those arguments in ... that are not multiData structures.

Value

A multiData structure containing (as the data components) the results of FUN. If simplification is successful, an array instead.

Author(s)

Peter Langfelder

See Also

multiData to create a multiData structure;

multiData.apply for application of a function to a single multiData structure.


WGCNA documentation built on Sept. 18, 2024, 5:08 p.m.

Related to mtd.mapply in WGCNA...