|
a |
|
b/R/XenaScan.R |
|
|
1 |
#' Scan all rows according to user input by a regular expression |
|
|
2 |
#' |
|
|
3 |
#' `XenaScan()` is a function can be used before [XenaGenerate()]. |
|
|
4 |
#' |
|
|
5 |
#' @inheritParams XenaGenerate |
|
|
6 |
#' @inheritParams base::grep |
|
|
7 |
#' @importFrom rlang .data |
|
|
8 |
#' |
|
|
9 |
#' @return a `data.frame` |
|
|
10 |
#' @export |
|
|
11 |
#' |
|
|
12 |
#' @examples |
|
|
13 |
#' |
|
|
14 |
#' x1 <- XenaScan(pattern = "Blood") |
|
|
15 |
#' x2 <- XenaScan(pattern = "LUNG", ignore.case = FALSE) |
|
|
16 |
#' |
|
|
17 |
#' x1 %>% |
|
|
18 |
#' XenaGenerate() |
|
|
19 |
#' x2 %>% |
|
|
20 |
#' XenaGenerate() |
|
|
21 |
XenaScan <- function(XenaData = UCSCXenaTools::XenaData, pattern = NULL, ignore.case = TRUE) { |
|
|
22 |
if (!is.null(pattern)) { |
|
|
23 |
index <- XenaData %>% |
|
|
24 |
dplyr::rowwise() %>% |
|
|
25 |
dplyr::do(data.frame(i = any(grepl(pattern, |
|
|
26 |
.data, |
|
|
27 |
ignore.case = ignore.case |
|
|
28 |
)))) %>% |
|
|
29 |
dplyr::pull(.data$i) |
|
|
30 |
if (any(index)) { |
|
|
31 |
data <- XenaData %>% dplyr::filter(index) |
|
|
32 |
return(data) |
|
|
33 |
} else { |
|
|
34 |
return(XenaData[FALSE, ]) |
|
|
35 |
} |
|
|
36 |
} else { |
|
|
37 |
return(XenaData) |
|
|
38 |
} |
|
|
39 |
} |