Divide a GDS object into a list of GDS objects based on a grouping factor
from col_data (subject-level metadata).
Usage
# S3 method for class 'gds'
split(x, f, drop = TRUE, ...)Examples
beta <- array(rnorm(5 * 4), c(5, 4, 1))
var <- array(1, c(5, 4, 1))
gds <- new_gds(list(beta = beta, var = var), space_sample_labels(letters[1:5]),
subjects = paste0("s", 1:4), contrasts = "c1",
col_data = data.frame(group = c("patients", "controls",
"patients", "controls"),
row.names = paste0("s", 1:4)))
# Split by group column in col_data
gds_by_group <- split(gds, "group")
gds_by_group$patients # GDS with only patient subjects
#> GDS
#> dims: 5 x 2 x 1 [sample x subject x contrast]
#> space: sample_labels n=5
#> subjects: 2 (s1, s3)
#> contrasts: 1 (c1)
#> assays: beta[location], var[variance]
subjects(gds_by_group$controls)
#> [1] "s2" "s4"
# Or provide a factor directly
groups <- factor(c("A", "B", "A", "B"))
gds_split <- split(gds, groups)
names(gds_split)
#> [1] "A" "B"