R/are_rates.R

Defines functions are_rates

Documented in are_rates

#' Determines if object x are rates
#' @param x object to be determined to be rates
#' @return TRUE if object x is a list of rates
are_rates <- function(x) {
  if (!"immig_rate" %in% names(x)) return(FALSE)
  if (!"ext_rate" %in% names(x)) return(FALSE)
  if (!"ana_rate" %in% names(x)) return(FALSE)
  if (!"clado_rate" %in% names(x)) return(FALSE)
  if (!"ext_rate_max" %in% names(x)) return(FALSE)
  if (!"immig_rate_max" %in% names(x)) return(FALSE)
  if (!"clado_rate_max" %in% names(x)) return(FALSE)
  if (x$immig_rate < 0.0) return(FALSE)
  if (x$ext_rate < 0.0) return(FALSE)
  if (x$ana_rate < 0.0) return(FALSE)
  if (x$clado_rate < 0.0) return(FALSE)
  if(length(x) == 7){
    if (x$ext_rate_max < 0.0 || x$ext_rate_max < x$ext_rate) return(FALSE)
    if (x$immig_rate_max < 0.0 || x$immig_rate_max < x$immig_rate) return(FALSE)
    if (x$clado_rate_max < 0.0 || x$clado_rate_max < x$clado_rate) return(FALSE)
  }else{
    if (!"immig_rate2" %in% names(x)) return(FALSE)
    if (!"ext_rate2" %in% names(x)) return(FALSE)
    if (!"ana_rate2" %in% names(x)) return(FALSE)
    if (!"clado_rate2" %in% names(x)) return(FALSE)
    if (!"trans_rate" %in% names(x)) return(FALSE)
    if (!"trans_rate2" %in% names(x)) return(FALSE)
    if (x$immig_rate2 < 0.0) return(FALSE)
    if (x$ext_rate2 < 0.0) return(FALSE)
    if (x$ana_rate2 < 0.0) return(FALSE)
    if (x$clado_rate2 < 0.0) return(FALSE)
    if (x$trans_rate < 0.0) return(FALSE)
    if (x$trans_rate2 < 0.0) return(FALSE)
    if (x$ext_rate_max < 0.0 || x$ext_rate_max < x$ext_rate || x$ext_rate_max < x$ext_rate2 ) return(FALSE)
    if (x$immig_rate_max < 0.0 || x$immig_rate_max < x$immig_rate || x$immig_rate_max < x$immig_rate2) return(FALSE)
    if (x$clado_rate_max < 0.0 || x$clado_rate_max < x$clado_rate || x$clado_rate_max < x$clado_rate2) return(FALSE)}
  TRUE
}
xieshu95/Trait_dependent_TraiSIE documentation built on Nov. 22, 2019, 7:51 a.m.