R/build-data-filter.R

buildDataFilter <- function(nodeSplit, ...) UseMethod("buildDataFilter")

buildDataFilter.nominalSplit <-
  function(nodeSplit, dts, whichWeights){
    buildNominalCriteria( nodeSplit$variableName
                         ,dts %>% as.data.frame %>% .[ whichWeights, nodeSplit$variableName] %>% unique)
  }

buildDataFilter.orderedSplit <-
  function(nodeSplit, dts, whichWeights){
    buildOrdinalCriteria( nodeSplit$variableName
                         ,nodeSplit %>% readSplitter
                         ,dts[whichWeights,])
}

readSplitter <- function(nodeSplit){
  splitPoint <- nodeSplit$splitpoint
  if ("levels" %>% is_in(splitPoint %>% attributes %>% names)) {
    splitPoint %>% attr("levels") %>% .[splitPoint]
  } else {
    splitPoint %>% as.numeric
  }
}

buildNominalCriteria <- function(varName, inclLevels){
  paste( varName
        ,"=="
        ,inclLevels %>% paste(collapse = ", ") %>% paste0("{", ., "}"))
}

buildOrdinalCriteria <- function(varName, splitter, dts){
  dts[,varName] %>%
    is_weakly_less_than(splitter) %>%
    all %>%
    ifelse("<=", ">") %>%
    paste(varName, ., splitter)
}
EmilRehnberg/party.readpaths documentation built on May 23, 2019, 10:32 p.m.