A set of functions for extracting and dividing a MultiAssayExperiment

subsetByRow(x, y, ...)

subsetByColData(x, y)

subsetByColumn(x, y)

subsetByAssay(x, y)

# S4 method for ExperimentList,ANY
subsetByRow(x, y, ...)

# S4 method for ExperimentList,list
subsetByRow(x, y)

# S4 method for ExperimentList,List
subsetByRow(x, y)

# S4 method for ExperimentList,logical
subsetByRow(x, y)

# S4 method for ExperimentList,list
subsetByColumn(x, y)

# S4 method for ExperimentList,List
subsetByColumn(x, y)

# S4 method for ExperimentList,logical
subsetByColumn(x, y)

# S4 method for ExperimentList
subsetByAssay(x, y)

# S4 method for MultiAssayExperiment,ANY
subsetByColData(x, y)

# S4 method for MultiAssayExperiment,character
subsetByColData(x, y)

# S4 method for MultiAssayExperiment,ANY
subsetByRow(x, y, ...)

# S4 method for MultiAssayExperiment,ANY
subsetByColumn(x, y)

# S4 method for MultiAssayExperiment
subsetByAssay(x, y)

# S4 method for MultiAssayExperiment,ANY,ANY,ANY
[(x, i, j, k, ..., drop = FALSE)

# S4 method for MultiAssayExperiment,ANY,ANY
[[(x, i, j, ...)

# S4 method for MultiAssayExperiment,ANY,ANY
[[(x, i, j, ...) <- value

# S4 method for MultiAssayExperiment,ANY,ANY,ANY
[(x, i, j, ...) <- value

Arguments

x

A MultiAssayExperiment or ExperimentList

y

Any argument used for subsetting, can be a character, logical, integer, list or List vector

...

Additional arguments passed on to lower level functions.

i

Either a character, integer, logical or GRanges object for subsetting by rows

j

Either a character, logical, or numeric vector for subsetting by colData rows. See details for more information.

k

Either a character, logical, or numeric vector for subsetting by assays

drop

logical (default FALSE) whether to drop all empty assay elements in the ExperimentList

value

An assay compatible with the MultiAssayExperiment API

Value

subsetBy* operations are endomorphic and return either MultiAssayExperiment or ExperimentList depending on the input.

Details

Subsetting a MultiAssayExperiment by the j index can yield a call to either subsetByColData or subsetByColumn. For vector inputs, the subset will be applied to the colData rows. For List-type inputs, the List will be applied to each of the elements in the ExperimentList. The order of the subsetting elements in the List must match that of the ExperimentList in the MultiAssayExperiment.

  • subsetBycolData: Select biological units by vector input types

  • subsetByColumn: Select observations by assay or for each assay

  • subsetByRow: Select rows by assay or for each assay

  • subsetByAssay: Select experiments

Examples

## Load the example MultiAssayExperiment
example("MultiAssayExperiment")
#> 
#> MltAsE> ## Run the example ExperimentList
#> MltAsE> example("ExperimentList")
#> 
#> ExprmL> ## Create an empty ExperimentList instance
#> ExprmL> ExperimentList()
#> ExperimentList class object of length 0:
#>  
#> ExprmL> ## Create array matrix and AnnotatedDataFrame to create an ExpressionSet class
#> ExprmL> arraydat <- matrix(data = seq(101, length.out = 20), ncol = 4,
#> ExprmL+     dimnames = list(
#> ExprmL+         c("ENST00000294241", "ENST00000355076",
#> ExprmL+         "ENST00000383706","ENST00000234812", "ENST00000383323"),
#> ExprmL+         c("array1", "array2", "array3", "array4")
#> ExprmL+     ))
#> 
#> ExprmL> colDat <- data.frame(slope53 = rnorm(4),
#> ExprmL+     row.names = c("array1", "array2", "array3", "array4"))
#> 
#> ExprmL> ## SummarizedExperiment constructor
#> ExprmL> exprdat <- SummarizedExperiment::SummarizedExperiment(arraydat,
#> ExprmL+     colData = colDat)
#> 
#> ExprmL> ## Create a sample methylation dataset
#> ExprmL> methyldat <- matrix(data = seq(1, length.out = 25), ncol = 5,
#> ExprmL+     dimnames = list(
#> ExprmL+         c("ENST00000355076", "ENST00000383706",
#> ExprmL+           "ENST00000383323", "ENST00000234812", "ENST00000294241"),
#> ExprmL+         c("methyl1", "methyl2", "methyl3",
#> ExprmL+           "methyl4", "methyl5")
#> ExprmL+     ))
#> 
#> ExprmL> ## Create a sample RNASeqGene dataset
#> ExprmL> rnadat <- matrix(
#> ExprmL+     data = sample(c(46851, 5, 19, 13, 2197, 507,
#> ExprmL+         84318, 126, 17, 21, 23979, 614), size = 20, replace = TRUE),
#> ExprmL+     ncol = 4,
#> ExprmL+     dimnames = list(
#> ExprmL+         c("XIST", "RPS4Y1", "KDM5D", "ENST00000383323", "ENST00000234812"),
#> ExprmL+         c("samparray1", "samparray2", "samparray3", "samparray4")
#> ExprmL+     ))
#> 
#> ExprmL> ## Create a mock RangedSummarizedExperiment from a data.frame
#> ExprmL> rangedat <- data.frame(chr="chr2", start = 11:15, end = 12:16,
#> ExprmL+     strand = c("+", "-", "+", "*", "."),
#> ExprmL+     samp0 = c(0,0,1,1,1), samp1 = c(1,0,1,0,1), samp2 = c(0,1,0,1,0),
#> ExprmL+     row.names = c(paste0("ENST", "00000", 135411:135414), "ENST00000383323"))
#> 
#> ExprmL> rangeSE <- SummarizedExperiment::makeSummarizedExperimentFromDataFrame(rangedat)
#> 
#> ExprmL> ## Combine to a named list and call the ExperimentList constructor function
#> ExprmL> assayList <- list(Affy = exprdat, Methyl450k = methyldat, RNASeqGene = rnadat,
#> ExprmL+                 GISTIC = rangeSE)
#> 
#> ExprmL> ## Use the ExperimentList constructor
#> ExprmL> ExpList <- ExperimentList(assayList)
#> 
#> MltAsE> ## Create sample maps for each experiment
#> MltAsE> exprmap <- data.frame(
#> MltAsE+     primary = c("Jack", "Jill", "Barbara", "Bob"),
#> MltAsE+     colname = c("array1", "array2", "array3", "array4"),
#> MltAsE+     stringsAsFactors = FALSE)
#> 
#> MltAsE> methylmap <- data.frame(
#> MltAsE+     primary = c("Jack", "Jack", "Jill", "Barbara", "Bob"),
#> MltAsE+     colname = c("methyl1", "methyl2", "methyl3", "methyl4", "methyl5"),
#> MltAsE+     stringsAsFactors = FALSE)
#> 
#> MltAsE> rnamap <- data.frame(
#> MltAsE+     primary = c("Jack", "Jill", "Bob", "Barbara"),
#> MltAsE+     colname = c("samparray1", "samparray2", "samparray3", "samparray4"),
#> MltAsE+     stringsAsFactors = FALSE)
#> 
#> MltAsE> gistmap <- data.frame(
#> MltAsE+     primary = c("Jack", "Bob", "Jill"),
#> MltAsE+     colname = c("samp0", "samp1", "samp2"),
#> MltAsE+     stringsAsFactors = FALSE)
#> 
#> MltAsE> ## Combine as a named list and convert to a DataFrame
#> MltAsE> maplist <- list(Affy = exprmap, Methyl450k = methylmap,
#> MltAsE+     RNASeqGene = rnamap, GISTIC = gistmap)
#> 
#> MltAsE> ## Create a sampleMap
#> MltAsE> sampMap <- listToMap(maplist)
#> 
#> MltAsE> ## Create an example phenotype data
#> MltAsE> colDat <- data.frame(sex = c("M", "F", "M", "F"), age = 38:41,
#> MltAsE+     row.names = c("Jack", "Jill", "Bob", "Barbara"))
#> 
#> MltAsE> ## Create a MultiAssayExperiment instance
#> MltAsE> mae <- MultiAssayExperiment(experiments = ExpList, colData = colDat,
#> MltAsE+     sampleMap = sampMap)

## Using experiment names
subsetByAssay(mae, "Affy")
#> Warning: 'experiments' dropped; see 'drops()'
#> harmonizing input:
#>   removing 12 sampleMap rows not in names(experiments)
#> A MultiAssayExperiment object of 1 listed
#>  experiment with a user-defined name and respective class.
#>  Containing an ExperimentList class object of length 1:
#>  [1] Affy: SummarizedExperiment with 5 rows and 4 columns
#> Functionality:
#>  experiments() - obtain the ExperimentList instance
#>  colData() - the primary/phenotype DataFrame
#>  sampleMap() - the sample coordination DataFrame
#>  `$`, `[`, `[[` - extract colData columns, subset, or experiment
#>  *Format() - convert into a long or wide DataFrame
#>  assays() - convert ExperimentList to a SimpleList of matrices
#>  exportClass() - save data to flat files

## Using numeric indices
subsetByAssay(mae, 1:2)
#> Warning: 'experiments' dropped; see 'drops()'
#> harmonizing input:
#>   removing 7 sampleMap rows not in names(experiments)
#> A MultiAssayExperiment object of 2 listed
#>  experiments with user-defined names and respective classes.
#>  Containing an ExperimentList class object of length 2:
#>  [1] Affy: SummarizedExperiment with 5 rows and 4 columns
#>  [2] Methyl450k: matrix with 5 rows and 5 columns
#> Functionality:
#>  experiments() - obtain the ExperimentList instance
#>  colData() - the primary/phenotype DataFrame
#>  sampleMap() - the sample coordination DataFrame
#>  `$`, `[`, `[[` - extract colData columns, subset, or experiment
#>  *Format() - convert into a long or wide DataFrame
#>  assays() - convert ExperimentList to a SimpleList of matrices
#>  exportClass() - save data to flat files

## Using a logical vector
subsetByAssay(mae, c(TRUE, FALSE, TRUE))
#> Warning: 'experiments' dropped; see 'drops()'
#> harmonizing input:
#>   removing 5 sampleMap rows not in names(experiments)
#> A MultiAssayExperiment object of 3 listed
#>  experiments with user-defined names and respective classes.
#>  Containing an ExperimentList class object of length 3:
#>  [1] Affy: SummarizedExperiment with 5 rows and 4 columns
#>  [2] RNASeqGene: matrix with 5 rows and 4 columns
#>  [3] GISTIC: RangedSummarizedExperiment with 5 rows and 3 columns
#> Functionality:
#>  experiments() - obtain the ExperimentList instance
#>  colData() - the primary/phenotype DataFrame
#>  sampleMap() - the sample coordination DataFrame
#>  `$`, `[`, `[[` - extract colData columns, subset, or experiment
#>  *Format() - convert into a long or wide DataFrame
#>  assays() - convert ExperimentList to a SimpleList of matrices
#>  exportClass() - save data to flat files

## Subset by character vector (Jack)
subsetByColData(mae, "Jack")
#> A MultiAssayExperiment object of 4 listed
#>  experiments with user-defined names and respective classes.
#>  Containing an ExperimentList class object of length 4:
#>  [1] Affy: SummarizedExperiment with 5 rows and 1 columns
#>  [2] Methyl450k: matrix with 5 rows and 2 columns
#>  [3] RNASeqGene: matrix with 5 rows and 1 columns
#>  [4] GISTIC: RangedSummarizedExperiment with 5 rows and 1 columns
#> Functionality:
#>  experiments() - obtain the ExperimentList instance
#>  colData() - the primary/phenotype DataFrame
#>  sampleMap() - the sample coordination DataFrame
#>  `$`, `[`, `[[` - extract colData columns, subset, or experiment
#>  *Format() - convert into a long or wide DataFrame
#>  assays() - convert ExperimentList to a SimpleList of matrices
#>  exportClass() - save data to flat files

## Subset by numeric index of colData rows (Jack and Bob)
subsetByColData(mae, c(1, 3))
#> A MultiAssayExperiment object of 4 listed
#>  experiments with user-defined names and respective classes.
#>  Containing an ExperimentList class object of length 4:
#>  [1] Affy: SummarizedExperiment with 5 rows and 2 columns
#>  [2] Methyl450k: matrix with 5 rows and 3 columns
#>  [3] RNASeqGene: matrix with 5 rows and 2 columns
#>  [4] GISTIC: RangedSummarizedExperiment with 5 rows and 2 columns
#> Functionality:
#>  experiments() - obtain the ExperimentList instance
#>  colData() - the primary/phenotype DataFrame
#>  sampleMap() - the sample coordination DataFrame
#>  `$`, `[`, `[[` - extract colData columns, subset, or experiment
#>  *Format() - convert into a long or wide DataFrame
#>  assays() - convert ExperimentList to a SimpleList of matrices
#>  exportClass() - save data to flat files

## Subset by logical indicator of colData rows (Jack and Jill)
subsetByColData(mae, c(TRUE, TRUE, FALSE, FALSE))
#> A MultiAssayExperiment object of 4 listed
#>  experiments with user-defined names and respective classes.
#>  Containing an ExperimentList class object of length 4:
#>  [1] Affy: SummarizedExperiment with 5 rows and 2 columns
#>  [2] Methyl450k: matrix with 5 rows and 3 columns
#>  [3] RNASeqGene: matrix with 5 rows and 2 columns
#>  [4] GISTIC: RangedSummarizedExperiment with 5 rows and 2 columns
#> Functionality:
#>  experiments() - obtain the ExperimentList instance
#>  colData() - the primary/phenotype DataFrame
#>  sampleMap() - the sample coordination DataFrame
#>  `$`, `[`, `[[` - extract colData columns, subset, or experiment
#>  *Format() - convert into a long or wide DataFrame
#>  assays() - convert ExperimentList to a SimpleList of matrices
#>  exportClass() - save data to flat files

subsetByColumn(mae, list(Affy = 1:2,
    Methyl450k = c(3,5,2), RNASeqGene = 2:4, GISTIC = 1))
#> harmonizing input:
#>   removing 7 sampleMap rows with 'colname' not in colnames of experiments
#> A MultiAssayExperiment object of 4 listed
#>  experiments with user-defined names and respective classes.
#>  Containing an ExperimentList class object of length 4:
#>  [1] Affy: SummarizedExperiment with 5 rows and 2 columns
#>  [2] Methyl450k: matrix with 5 rows and 3 columns
#>  [3] RNASeqGene: matrix with 5 rows and 3 columns
#>  [4] GISTIC: RangedSummarizedExperiment with 5 rows and 1 columns
#> Functionality:
#>  experiments() - obtain the ExperimentList instance
#>  colData() - the primary/phenotype DataFrame
#>  sampleMap() - the sample coordination DataFrame
#>  `$`, `[`, `[[` - extract colData columns, subset, or experiment
#>  *Format() - convert into a long or wide DataFrame
#>  assays() - convert ExperimentList to a SimpleList of matrices
#>  exportClass() - save data to flat files

subsetWith <- S4Vectors::mendoapply(`[`, colnames(mae),
    MoreArgs = list(1:2))
subsetByColumn(mae, subsetWith)
#> harmonizing input:
#>   removing 8 sampleMap rows with 'colname' not in colnames of experiments
#>   removing 1 colData rownames not in sampleMap 'primary'
#> A MultiAssayExperiment object of 4 listed
#>  experiments with user-defined names and respective classes.
#>  Containing an ExperimentList class object of length 4:
#>  [1] Affy: SummarizedExperiment with 5 rows and 2 columns
#>  [2] Methyl450k: matrix with 5 rows and 2 columns
#>  [3] RNASeqGene: matrix with 5 rows and 2 columns
#>  [4] GISTIC: RangedSummarizedExperiment with 5 rows and 2 columns
#> Functionality:
#>  experiments() - obtain the ExperimentList instance
#>  colData() - the primary/phenotype DataFrame
#>  sampleMap() - the sample coordination DataFrame
#>  `$`, `[`, `[[` - extract colData columns, subset, or experiment
#>  *Format() - convert into a long or wide DataFrame
#>  assays() - convert ExperimentList to a SimpleList of matrices
#>  exportClass() - save data to flat files

## Use a GRanges object to subset rows where ranged data present
egr <- GenomicRanges::GRanges(seqnames = "chr2",
    IRanges::IRanges(start = 11, end = 13), strand = "-")
subsetByRow(mae, egr)
#> A MultiAssayExperiment object of 4 listed
#>  experiments with user-defined names and respective classes.
#>  Containing an ExperimentList class object of length 4:
#>  [1] Affy: SummarizedExperiment with 0 rows and 4 columns
#>  [2] Methyl450k: matrix with 0 rows and 5 columns
#>  [3] RNASeqGene: matrix with 0 rows and 4 columns
#>  [4] GISTIC: RangedSummarizedExperiment with 1 rows and 3 columns
#> Functionality:
#>  experiments() - obtain the ExperimentList instance
#>  colData() - the primary/phenotype DataFrame
#>  sampleMap() - the sample coordination DataFrame
#>  `$`, `[`, `[[` - extract colData columns, subset, or experiment
#>  *Format() - convert into a long or wide DataFrame
#>  assays() - convert ExperimentList to a SimpleList of matrices
#>  exportClass() - save data to flat files

## Use a logical vector (recycling used)
subsetByRow(mae, c(TRUE, FALSE))
#> A MultiAssayExperiment object of 4 listed
#>  experiments with user-defined names and respective classes.
#>  Containing an ExperimentList class object of length 4:
#>  [1] Affy: SummarizedExperiment with 3 rows and 4 columns
#>  [2] Methyl450k: matrix with 3 rows and 5 columns
#>  [3] RNASeqGene: matrix with 3 rows and 4 columns
#>  [4] GISTIC: RangedSummarizedExperiment with 3 rows and 3 columns
#> Functionality:
#>  experiments() - obtain the ExperimentList instance
#>  colData() - the primary/phenotype DataFrame
#>  sampleMap() - the sample coordination DataFrame
#>  `$`, `[`, `[[` - extract colData columns, subset, or experiment
#>  *Format() - convert into a long or wide DataFrame
#>  assays() - convert ExperimentList to a SimpleList of matrices
#>  exportClass() - save data to flat files

## Use a character vector
subsetByRow(mae, "ENST00000355076")
#> A MultiAssayExperiment object of 4 listed
#>  experiments with user-defined names and respective classes.
#>  Containing an ExperimentList class object of length 4:
#>  [1] Affy: SummarizedExperiment with 1 rows and 4 columns
#>  [2] Methyl450k: matrix with 1 rows and 5 columns
#>  [3] RNASeqGene: matrix with 0 rows and 4 columns
#>  [4] GISTIC: RangedSummarizedExperiment with 0 rows and 3 columns
#> Functionality:
#>  experiments() - obtain the ExperimentList instance
#>  colData() - the primary/phenotype DataFrame
#>  sampleMap() - the sample coordination DataFrame
#>  `$`, `[`, `[[` - extract colData columns, subset, or experiment
#>  *Format() - convert into a long or wide DataFrame
#>  assays() - convert ExperimentList to a SimpleList of matrices
#>  exportClass() - save data to flat files