R/extractRownames2.R

Defines functions extractRownames2

Documented in extractRownames2

#' Extracts row names and filters based on 2 columns
#'
#' @param data data frame
#' @param transpose transpose data
#' @param column1 column 1 to be used
#' @param lower1 lower or upper limit 1
#' @param threshold1 threshold for filtering 1
#' @param column2 column 2 to be used
#' @param lower2 lower or upper limit 2
#' @param threshold2 threshold for filtering 2
#'
#' @return
#' @export
#'
#'
extractRownames2 <- function(data, transpose = F, column1, lower1, threshold1, column2, lower2, threshold2) {

  if(!hasArg(data)) {
    data <- getData()
  }

  data <- transposeData(data, transpose = transpose)

  rownames <- rep(T, nrow(data))
  message("")
  message(paste(sum(rownames), "row names in total."))

  if(!hasArg(column1)) {
    column1 <- whatToDo("Which column should be used for first filtering?", colnames(data))
  }

  if(!hasArg(lower1)) {
    lower1 <- ok("Is this a lower limit?")
  }


  if(!hasArg(threshold1)) {
    threshold1 <- getNumber("Threshold: ")
  }

  if(lower1) {
    rownames <- combineAND(rownames, data[, column1] > threshold1)
  }

  else {
    rownames <- combineAND(rownames, data[, column1] < threshold1)
  }

  message(paste(sum(rownames), "row names after first filtering."))

  #Second round
  if(!hasArg(column2)) {
    column2 <- whatToDo("Which column should be used for second filtering?", colnames(data))
  }

  if(!hasArg(lower2)) {
    lower2 <- ok("Is this a lower limit?")
  }


  if(!hasArg(threshold2)) {
    threshold2 <- getNumber("Threshold: ")
  }

  if(lower2) {
    rownames <- combineAND(rownames, data[, column2] > threshold2)
  }

  else {
    rownames <- combineAND(rownames, data[, column2] < threshold2)
  }


  message(paste(sum(rownames), "row names after second filtering."))

  rownames(data)[rownames]

}
nicohuttmann/htmnanalysis documentation built on Dec. 6, 2020, 3:02 a.m.