R/processCensoringDistribution.R

Defines functions processCensoringDistribution

# Internal function. Takes a censoring distribution and turns it into a
# RightContinuousStepFunction Java object.
processCensoringDistribution <- function(censoringDistribution){

  if(is.numeric(censoringDistribution)){
    # estimate ECDF
    censoringTimes <- .jarray(censoringDistribution, "D")
    java.censoringDistribution <- .jcall(.class_Utils, makeResponse(.class_RightContinuousStepFunction), "estimateOneMinusECDF", censoringTimes)
    
  } else if(is.list(censoringDistribution)){
    # First check that censoringDistribution fits the correct format
    if(is.null(censoringDistribution$x) | is.null(censoringDistribution$y)){
      stop("If the censoringDistribution is provided as a list, it must have an x and a y item that are numeric.")
    }
    
    if(length(censoringDistribution$x) != length(censoringDistribution$y)){
      stop("x and y in censoringDistribution must have the same length.")
    }
    
    if(!is.numeric(censoringDistribution$x) | !is.numeric(censoringDistribution$y)){
      stop("x and y in censoringDistribution must both be numeric.")
    }
    
    java.censoringDistribution <- createRightContinuousStepFunction(censoringDistribution$x, censoringDistribution$y, defaultY = 1.0)
    
  } else if("stepfun" %in% class(censoringDistribution)){
    x <- stats::knots(censoringDistribution)
    y <- censoringDistribution(x)
    
    java.censoringDistribution <- createRightContinuousStepFunction(x, y, defaultY = 1.0)
  }
  else{
    stop("Invalid censoringDistribution")
  }
    
  return(java.censoringDistribution)
}
jatherrien/largeRCRF documentation built on Nov. 15, 2019, 7:16 a.m.