-
Notifications
You must be signed in to change notification settings - Fork 0
/
keep.R
75 lines (64 loc) · 2.1 KB
/
keep.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#' Keep samples, classes or features
#' @rdname keep
#' @description Retain samples, classes or features in an `AnalysisData` object.
#' @param d S4 object of class AnalysisData
#' @param idx info column containing sample indexes
#' @param samples sample indexes to keep
#' @param cls info column to use for class information
#' @param classes classes to keep
#' @param features features to remove
#' @return An S4 object of class `AnalysisData` with specified samples, classes or features retained.
#' @section Methods:
#' * `keepClasses`: Keep classes.
#' * `keepFeatures`: Keep features.
#' * `keepSamples`: Keep samples.
#' @examples
#' library(metaboData)
#' d <- analysisData(abr1$neg[,200:300],abr1$fact)
#'
#' ## Keep classes
#' d %>%
#' keepClasses(cls = 'day',classes = 'H')
#'
#' ## Keep features
#' d %>%
#' keepFeatures(features = c('N200','N201'))
#'
#' ## Keep samples
#' d %>%
#' keepSamples(idx = 'injorder',samples = c(1,10))
#' @export
setGeneric("keepClasses", function(d,cls = 'class', classes = c())
standardGeneric("keepClasses"))
#' @rdname keep
setMethod('keepClasses',signature = 'AnalysisData',
function(d,cls = 'class', classes = c()){
dat(d) <- dat(d)[unlist(sinfo(d)[,cls]) %in% classes,]
sinfo(d) <- sinfo(d)[unlist(sinfo(d)[,cls]) %in% classes,]
return(d)
}
)
#' @rdname keep
#' @export
setGeneric("keepFeatures", function(d,features = character())
standardGeneric("keepFeatures"))
#' @rdname keep
setMethod('keepFeatures',signature = 'AnalysisData',
function(d,features = character()){
dat(d) <- dat(d)[,colnames(dat(d)) %in% features]
return(d)
}
)
#' @rdname keep
#' @export
setGeneric("keepSamples", function(d,idx = 'fileOrder', samples = c())
standardGeneric("keepSamples")
)
#' @rdname keep
setMethod('keepSamples',signature = 'AnalysisData',
function(d,idx = 'fileOrder', samples = c()){
dat(d) <- dat(d)[unlist(sinfo(d)[,idx]) %in% samples,]
sinfo(d) <- sinfo(d)[unlist(sinfo(d)[,idx]) %in% samples,]
return(d)
}
)