Diff of /R/XenaScan.R [000000] .. [0bdad5]

Switch to side-by-side view

--- a
+++ b/R/XenaScan.R
@@ -0,0 +1,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)
+  }
+}