Subsetting a MultiAssayExperiment object
Source:R/subsetBy-methods.R
, R/MultiAssayExperiment-subset.R
subsetBy.Rd
A 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, ...] <- value
Arguments
- x
A
MultiAssayExperiment
orExperimentList
- y
Any argument used for subsetting, can be a
character
,logical
,integer
,list
orList
vector- ...
Additional arguments passed on to lower level functions.
- i
Either a
character
,integer
,logical
orGRanges
object for subsetting by rows- j
Either a
character
,logical
, ornumeric
vector for subsetting bycolData
rows. See details for more information.- k
Either a
character
,logical
, ornumeric
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