Subsetting a MultiAssayExperiment object
Source:R/subsetBy-methods.R, R/MultiAssayExperiment-subset.R
subsetBy.RdA set of functions for extracting and dividing a
MultiAssayExperiment
Usage
subsetByRow(x, y, ...)
subsetByColData(x, y)
subsetByColumn(x, y)
subsetByAssay(x, y)
# S4 method for class 'ExperimentList,ANY'
subsetByRow(x, y, ...)
# S4 method for class 'ExperimentList,list'
subsetByRow(x, y)
# S4 method for class 'ExperimentList,List'
subsetByRow(x, y)
# S4 method for class 'ExperimentList,logical'
subsetByRow(x, y)
# S4 method for class 'ExperimentList,list'
subsetByColumn(x, y)
# S4 method for class 'ExperimentList,List'
subsetByColumn(x, y)
# S4 method for class 'ExperimentList,logical'
subsetByColumn(x, y)
# S4 method for class 'ExperimentList'
subsetByAssay(x, y)
# S4 method for class 'MultiAssayExperiment,ANY'
subsetByColData(x, y)
# S4 method for class 'MultiAssayExperiment,character'
subsetByColData(x, y)
# S4 method for class 'MultiAssayExperiment,ANY'
subsetByRow(x, y, ...)
# S4 method for class 'MultiAssayExperiment,ANY'
subsetByColumn(x, y)
# S4 method for class 'MultiAssayExperiment'
subsetByAssay(x, y)
# S4 method for class 'MultiAssayExperiment,ANY,ANY,ANY'
x[i, j, k, ..., drop = FALSE]
# S4 method for class 'MultiAssayExperiment,ANY,ANY'
x[[i, j, ...]]
# S4 method for class 'MultiAssayExperiment,ANY,ANY'
x[[i, j, ...]] <- value
# S4 method for class 'MultiAssayExperiment,ANY,ANY,ANY'
x[i, j, ...] <- valueArguments
- x
A
MultiAssayExperimentorExperimentList- y
Any argument used for subsetting, can be a
character,logical,integer,listorListvector- ...
Additional arguments passed on to lower level functions.
- i
Either a
character,integer,logicalorGRangesobject for subsetting by rows- j
Either a
character,logical, ornumericvector for subsetting bycolDatarows. See details for more information.- k
Either a
character,logical, ornumericvector 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