Ano.R 1.78 KB
Newer Older
Ano <- function(var, clim) {
  #
  #  Duplicate clim dimensions to heve same dimensions as var
  # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  #
  dimvar <- dim(var)
aho's avatar
aho committed

Alasdair Hunter's avatar
Alasdair Hunter committed
  if (length(dim(clim)) <= 2) {
    clim <- InsertDim(clim, 2, dimvar[2])
  }
aho's avatar
aho committed

  if ((length(dimvar) > length(dim(clim))) & (dim(clim)[2] != dimvar[2])) {
aho's avatar
aho committed
  if ((length(dimvar) > length(dim(clim))) & (dim(clim)[2] == dimvar[2])) {
    if (is.null(names(dim(clim))) | is.null(names(dimvar))) {
aho's avatar
aho committed
      stop('Provide dimension names on parameter \'var\' and \'clim\' to avoid ambiguity.')
aho's avatar
aho committed
    } else {
      if (names(dim(clim)[2]) != names(dimvar[2])) {
        clim <- InsertDim(clim, 2, dimvar[2])
      }
    }
  }

  if ((length(dimvar) > length(dim(clim))) & (dim(clim)[3] != dimvar[3])) {
aho's avatar
aho committed
  if ((length(dimvar) > length(dim(clim))) & (dim(clim)[3] == dimvar[3])) {
    if (is.null(names(dim(clim))) | is.null(names(dimvar))) {
aho's avatar
aho committed
      stop('Provide dimension names on parameter \'var\' and \'clim\' to avoid ambiguity.')
aho's avatar
aho committed
    } else {
      if (names(dim(clim)[3]) != names(dimvar[3])) {
        clim <- InsertDim(clim, 3, dimvar[3])
      }
    }
  }

  if ((length(dimvar) > length(dim(clim))) & (dim(clim)[4] != dimvar[4])) {
aho's avatar
aho committed
  if ((length(dimvar) > length(dim(clim))) & (dim(clim)[4] == dimvar[4])) {
    if (is.null(names(dim(clim))) | is.null(names(dimvar))) {
aho's avatar
aho committed
      stop('Provide dimension names on parameter \'var\' and \'clim\' to avoid ambiguity.')
aho's avatar
aho committed
    } else {
      if (names(dim(clim)[4]) != names(dimvar[4])) {
        clim <- InsertDim(clim, 4, dimvar[4])
      }
    }
  }

  #
  #  Raw anomalies
  # ~~~~~~~~~~~~~~~
  #
  ano <- var - clim
aho's avatar
aho committed