The longForm()
method transform a QFeatures or SummarizedExperiment
instance into a long tidy DataFrame that contains the assay data, where
each quantitative value is reported on a separate line. colData
and
rowData
varibales can also be added. This function is an extension of the
longForm()
method in the MultiAssayExperiment::MultiAssayExperiment.
Note that the previous longFormat
implementation is not defunct.
Usage
# S4 method for class 'QFeatures'
longForm(object, colvars = NULL, rowvars = NULL, i = 1L)
# S4 method for class 'SummarizedExperiment'
longForm(object, colvars = NULL, rowvars = NULL, i = seq_along(assays(object)))
Arguments
- object
An instance of class QFeatures or SummarizedExperiment.
- colvars
A
character()
that selects column(s) in thecolData
.- rowvars
A
character()
with the names of therowData
variables (columns) to retain in any assay.- i
When
object
is an instance of classQFeatures
, anumeric(1)
indicating what assay within eachSummarizedExperiment
object to return. Default is1L
. Ifobject
is aSummarizedExperiment
, anumeric()
indicating what assays to pull and convert. Default is to use all assays.
Examples
data(feat2)
longForm(feat2)
#> DataFrame with 84 rows and 5 columns
#> assay primary rowname colname value
#> <character> <character> <character> <character> <numeric>
#> 1 assay1 S1 a S1 1
#> 2 assay1 S1 b S1 2
#> 3 assay1 S1 c S1 3
#> 4 assay1 S1 d S1 4
#> 5 assay1 S1 e S1 5
#> ... ... ... ... ... ...
#> 80 assay3 S12 j S12 24
#> 81 assay3 S12 k S12 25
#> 82 assay3 S12 l S12 26
#> 83 assay3 S12 m S12 27
#> 84 assay3 S12 n S12 28
## add a colData variable and use it in longFrom
colData(feat2)$colvar <- paste0("Var", 1:12)
colData(feat2)
#> DataFrame with 12 rows and 1 column
#> colvar
#> <character>
#> S1 Var1
#> S2 Var2
#> S3 Var3
#> S4 Var4
#> S5 Var5
#> ... ...
#> S8 Var8
#> S9 Var9
#> S10 Var10
#> S11 Var11
#> S12 Var12
longForm(feat2, colvars = "colvar")
#> DataFrame with 84 rows and 6 columns
#> assay primary rowname colname value colvar
#> <character> <character> <character> <character> <numeric> <character>
#> 1 assay1 S1 a S1 1 Var1
#> 2 assay1 S1 b S1 2 Var1
#> 3 assay1 S1 c S1 3 Var1
#> 4 assay1 S1 d S1 4 Var1
#> 5 assay1 S1 e S1 5 Var1
#> ... ... ... ... ... ... ...
#> 80 assay3 S12 j S12 24 Var12
#> 81 assay3 S12 k S12 25 Var12
#> 82 assay3 S12 l S12 26 Var12
#> 83 assay3 S12 m S12 27 Var12
#> 84 assay3 S12 n S12 28 Var12
## use a rowData variable in longFrom
rowDataNames(feat2)
#> CharacterList of length 3
#> [["assay1"]] Prot x
#> [["assay2"]] Prot x y
#> [["assay3"]] Prot x y
longForm(feat2, rowvar = "Prot")
#> DataFrame with 84 rows and 6 columns
#> assay primary rowname colname value Prot
#> <character> <character> <character> <character> <numeric> <character>
#> 1 assay1 S1 a S1 1 Pa
#> 2 assay1 S1 b S1 2 Pb
#> 3 assay1 S1 c S1 3 Pc
#> 4 assay1 S1 d S1 4 Pd
#> 5 assay1 S1 e S1 5 Pe
#> ... ... ... ... ... ... ...
#> 80 assay3 S12 j S12 24 Pj
#> 81 assay3 S12 k S12 25 Pk
#> 82 assay3 S12 l S12 26 Pl
#> 83 assay3 S12 m S12 27 Pm
#> 84 assay3 S12 n S12 28 Pn
## use both col/rowData
longForm(feat2, colvar = "colvar", rowvar = "Prot")
#> DataFrame with 84 rows and 7 columns
#> assay primary rowname colname value colvar
#> <character> <character> <character> <character> <numeric> <character>
#> 1 assay1 S1 a S1 1 Var1
#> 2 assay1 S1 b S1 2 Var1
#> 3 assay1 S1 c S1 3 Var1
#> 4 assay1 S1 d S1 4 Var1
#> 5 assay1 S1 e S1 5 Var1
#> ... ... ... ... ... ... ...
#> 80 assay3 S12 j S12 24 Var12
#> 81 assay3 S12 k S12 25 Var12
#> 82 assay3 S12 l S12 26 Var12
#> 83 assay3 S12 m S12 27 Var12
#> 84 assay3 S12 n S12 28 Var12
#> Prot
#> <character>
#> 1 Pa
#> 2 Pb
#> 3 Pc
#> 4 Pd
#> 5 Pe
#> ... ...
#> 80 Pj
#> 81 Pk
#> 82 Pl
#> 83 Pm
#> 84 Pn
## also works on a single SE
se <- getWithColData(feat2, 1)
#> Warning: 'experiments' dropped; see 'drops()'
longForm(se)
#> DataFrame with 40 rows and 4 columns
#> rowname colname value assayName
#> <character> <character> <numeric> <integer>
#> 1 a S1 1 1
#> 2 b S1 2 1
#> 3 c S1 3 1
#> 4 d S1 4 1
#> 5 e S1 5 1
#> ... ... ... ... ...
#> 36 f S4 36 1
#> 37 g S4 37 1
#> 38 h S4 38 1
#> 39 i S4 39 1
#> 40 j S4 40 1
longForm(se, colvar = "colvar")
#> DataFrame with 40 rows and 5 columns
#> rowname colname value assayName colvar
#> <character> <character> <numeric> <integer> <character>
#> 1 a S1 1 1 Var1
#> 2 b S1 2 1 Var1
#> 3 c S1 3 1 Var1
#> 4 d S1 4 1 Var1
#> 5 e S1 5 1 Var1
#> ... ... ... ... ... ...
#> 36 f S4 36 1 Var4
#> 37 g S4 37 1 Var4
#> 38 h S4 38 1 Var4
#> 39 i S4 39 1 Var4
#> 40 j S4 40 1 Var4
longForm(se, rowvar = "Prot")
#> DataFrame with 40 rows and 5 columns
#> rowname colname value assayName Prot
#> <character> <character> <numeric> <integer> <character>
#> 1 a S1 1 1 Pa
#> 2 b S1 2 1 Pb
#> 3 c S1 3 1 Pc
#> 4 d S1 4 1 Pd
#> 5 e S1 5 1 Pe
#> ... ... ... ... ... ...
#> 36 f S4 36 1 Pf
#> 37 g S4 37 1 Pg
#> 38 h S4 38 1 Ph
#> 39 i S4 39 1 Pi
#> 40 j S4 40 1 Pj
longForm(se, colvar = "colvar", rowvar = "Prot")
#> DataFrame with 40 rows and 6 columns
#> rowname colname value assayName colvar Prot
#> <character> <character> <numeric> <integer> <character> <character>
#> 1 a S1 1 1 Var1 Pa
#> 2 b S1 2 1 Var1 Pb
#> 3 c S1 3 1 Var1 Pc
#> 4 d S1 4 1 Var1 Pd
#> 5 e S1 5 1 Var1 Pe
#> ... ... ... ... ... ... ...
#> 36 f S4 36 1 Var4 Pf
#> 37 g S4 37 1 Var4 Pg
#> 38 h S4 38 1 Var4 Ph
#> 39 i S4 39 1 Var4 Pi
#> 40 j S4 40 1 Var4 Pj