[0bdad5]: / R / XenaScan.R

Download this file

40 lines (39 with data), 935 Bytes

 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
#' Scan all rows according to user input by a regular expression
#'
#' `XenaScan()` is a function can be used before [XenaGenerate()].
#'
#' @inheritParams XenaGenerate
#' @inheritParams base::grep
#' @importFrom rlang .data
#'
#' @return a `data.frame`
#' @export
#'
#' @examples
#'
#' x1 <- XenaScan(pattern = "Blood")
#' x2 <- XenaScan(pattern = "LUNG", ignore.case = FALSE)
#'
#' x1 %>%
#' XenaGenerate()
#' x2 %>%
#' XenaGenerate()
XenaScan <- function(XenaData = UCSCXenaTools::XenaData, pattern = NULL, ignore.case = TRUE) {
if (!is.null(pattern)) {
index <- XenaData %>%
dplyr::rowwise() %>%
dplyr::do(data.frame(i = any(grepl(pattern,
.data,
ignore.case = ignore.case
)))) %>%
dplyr::pull(.data$i)
if (any(index)) {
data <- XenaData %>% dplyr::filter(index)
return(data)
} else {
return(XenaData[FALSE, ])
}
} else {
return(XenaData)
}
}