R/distance.R

Defines functions distance wDistance

Documented in distance wDistance

#' Distance calculation
#'
#' @param x a new dataset
#' @param y a second new dataset
#' @param method a distance method (available are: euclidian, manhattan, maximum, minkowski, and cosine)
#' @param p parameter for Minkowski distance
#' 
#' @return a \code{dist} or \code{matrix} object
#'         
#' @examples
#' \dontrun{
#' distance(iris[, -5])
#' }
#' 
#' @export
distance <- function(x, y=NULL, method="euclidian", p=2) {
  method <- match.arg(method, c("euclidian", "manhattan", "minkowski", "maximum", "cosine"))
  if (is.null(y)) {
    d <- distanceCPP(as.matrix(x), method, p) 
    return(asDistObject(d, nrow(x), method))
  } else {
    return(distanceXYCPP(as.matrix(x), as.matrix(y), method, p))
  }
}


#' Weighted Distance calculation
#' 
#' @param x a new dataset
#' @param y a second new dataset
#' @param weights a vector of weights
#' 
#' @return a \code{dist} or \code{matrix} object
#' 
#' @examples
#' \dontrun{
#' require(ranger)
#' rf <- ranger(Species ~ ., data = iris, num.trees = 5, write.forest = TRUE)
#' terminalNodeIdsRanger(iris[, -5], rf)
#' }
#' 
#' @export
wDistance <- function(x, y=NULL, weights=NULL) {
  if (is.null(weights)) {
    weights <- seq(1, ncol(x))
  }
  if (is.null(y)) {
    d <- wDistanceCPP(x, weights) 
    return(asDistObject(d, nrow(x), "weightedDistance"))
  } else {
    return(wDistanceXYCPP(x, y, weights))
  }
}
sipemu/similarity documentation built on May 29, 2019, 10:10 p.m.