R/evaluation-functions.R

Defines functions .condition conds

Documented in conds

#############################
#       EVALUATION         #
############################

#' Condition evaluation functions
#'
#' This function is used to support joinBy and/or groupBy function parameter.
#'
#' @param default concatenation of string identifying a name of metadata 
#' attribute to be evaluated. 
#' It defines a DEFAULT evaluation of the input values. 
#' DEFAULT evaluation: the two attributes match if both end with value.
#' 
#' @param full concatenation of string identifying a name of metadata 
#' attribute to be evaluated.
#' It defines a FULL (FULLNAME) evaluation of the input values.
#' FULL evaluation: two attributes match if they both end with value and,
#' if they have further prefixes, the two prefix sequences are identical.
#' 
#' @param exact concatenation of string identifying a name of metadata 
#' attribute to be evaluated.
#' It defines a EXACT evaluation of the input values.
#' EXACT evaluation: only attributes exactly as value match; 
#' no further prefixes are allowed. 
#' 
#' @return list of 2-D array containing method of evaluation and metadata 
#' attribute name
#' 
#' 
#' @name Evaluation-Function
#' @aliases condition_evaluation
#' @rdname condition_eval_func
#' @export
conds <- function(default = c(""), full = c(""), exact = c(""))
{
    df <- .condition("DEF",default)
    fn <- .condition("FULL",full)
    ex <- .condition("EXACT",exact)
    list("condition" = list("def" = df, "full" = fn, "exact" = ex))
}

.condition <- function(cond, array)
{
    array = array[!array %in% ""]
    array = array[!duplicated(array)]
    
    if(!length(array))
        join_condition_matrix <- NULL
    else
    {
        join_condition_matrix <- t(vapply(array, function(x) {
            new_value = c(cond, x)
            matrix <- matrix(new_value)
        },character(2)))
    }
    join_condition_matrix
}

Try the RGMQL package in your browser

Any scripts or data that you put into this service are public.

RGMQL documentation built on Nov. 8, 2020, 5:59 p.m.