From d5575c40e2cb6b8d3fe6d1277a856aed73f8e176 Mon Sep 17 00:00:00 2001 From: Reinhold Kainhofer <reinhold@kainhofer.com> Date: Mon, 26 Oct 2020 16:54:26 +0100 Subject: [PATCH] add function mT.setSlot to set any slot within a mortality table --- NAMESPACE | 1 + R/utilityFunctions.R | 60 ++++++++++++++++++++++++++++++++++++++++++++ man/mT.setSlot.Rd | 46 +++++++++++++++++++++++++++++++++ 3 files changed, 107 insertions(+) create mode 100644 man/mT.setSlot.Rd diff --git a/NAMESPACE b/NAMESPACE index 79b81d9..938360d 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -74,6 +74,7 @@ exportMethods(getPeriodTable) exportMethods(lifeTable) exportMethods(mT.cleanup) exportMethods(mT.round) +exportMethods(mT.setSlot) exportMethods(mortalityImprovement) exportMethods(periodDeathProbabilities) exportMethods(periodTransitionProbabilities) diff --git a/R/utilityFunctions.R b/R/utilityFunctions.R index 4dd1fbd..9afbf5e 100644 --- a/R/utilityFunctions.R +++ b/R/utilityFunctions.R @@ -951,3 +951,63 @@ pT.recalculateTotalMortality = function(object, ...) { object } + + +#' Set a certain slot of the mortality tables (or of each element of the list of tables) +#' +#' The function mt.setSlot adds the given slot to all mortalityTable objects. +#' +#' @param object The mortalityTable object to be modified (or a list / array of mortalityTable object) +#' @param slot the desired slot to set +#' @param value the value for the slot +#' +#' @examples +#' mortalityTables.load("Austria_Census") +#' # Add 10-year selection factors to the population mortality +#' mort.AT.census.2011.male.select = mT.setSlot(mort.AT.census.2011.male, "selectionFactors", 1:10/10) +#' +#' @exportMethod mT.setSlot +setGeneric("mT.setSlot", function(object, slot, value = NULL) standardGeneric("mT.setSlot")); + +#' @describeIn mT.setSlot Set a slot for the given mortalityTable +setMethod("mT.setSlot", "mortalityTable", + function(object, slot, value = NULL) { + slot(object, slot) <- value + object + }) +#' @describeIn mT.setSlot Set a slot for the mortalityTables stored in an array +setMethod("mT.setSlot", "array", + function(object, slot, value = NULL) { + array( + lapply(object, mT.setSlot, slot = slot, value = value), + dim = dim(object), dimnames = dimnames(object)) + }) +#' @describeIn mT.setSlot Set a slot for the given mortalityTables stored in a list +setMethod("mT.setSlot", "list", + function(object, slot, value = NULL) { + lapply(object, mT.setSlot, slot = slot, value = value) + }) + +#' @describeIn mT.setSlot Set a slot for all components of a pensionTable +setMethod("mT.setSlot", "pensionTable", + function(object, slot, value = NULL) { + object@qx = mT.setSlot(object@qx, slot = slot, value = value) + object@ix = mT.setSlot(object@ix, slot = slot, value = value) + object@qix = mT.setSlot(object@qix, slot = slot, value = value) + object@rx = mT.setSlot(object@rx, slot = slot, value = value) + object@apx = mT.setSlot(object@apx, slot = slot, value = value) + object@qpx = mT.setSlot(object@qpx, slot = slot, value = value) + object@hx = mT.setSlot(object@hx, slot = slot, value = value) + object@qwy = mT.setSlot(object@qwy, slot = slot, value = value) + object@qgx = mT.setSlot(object@qgx, slot = slot, value = value) + object + }) + +#' @describeIn mT.setSlot Empty dummy function that simply returns NULL +setMethod("mT.setSlot", "NULL", + function(object, slot, value = NULL) { + NULL + }) + + + diff --git a/man/mT.setSlot.Rd b/man/mT.setSlot.Rd new file mode 100644 index 0000000..6edcd94 --- /dev/null +++ b/man/mT.setSlot.Rd @@ -0,0 +1,46 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/utilityFunctions.R +\name{mT.setSlot} +\alias{mT.setSlot} +\alias{mT.setSlot,mortalityTable-method} +\alias{mT.setSlot,array-method} +\alias{mT.setSlot,list-method} +\alias{mT.setSlot,pensionTable-method} +\alias{mT.setSlot,NULL-method} +\title{Set a certain slot of the mortality tables (or of each element of the list of tables)} +\usage{ +mT.setSlot(object, slot, value = NULL) + +\S4method{mT.setSlot}{mortalityTable}(object, slot, value = NULL) + +\S4method{mT.setSlot}{array}(object, slot, value = NULL) + +\S4method{mT.setSlot}{list}(object, slot, value = NULL) + +\S4method{mT.setSlot}{pensionTable}(object, slot, value = NULL) + +\S4method{mT.setSlot}{`NULL`}(object, slot, value = NULL) +} +\arguments{ +\item{object}{The mortalityTable object to be modified (or a list / array of mortalityTable object)} + +\item{slot}{the desired slot to set} + +\item{value}{the value for the slot} +} +\description{ +The function mt.setSlot adds the given slot to all mortalityTable objects. +} +\section{Methods (by class)}{ +\itemize{ +\item \code{mortalityTable}: Set a slot for the given mortalityTable + +\item \code{array}: Set a slot for the mortalityTables stored in an array + +\item \code{list}: Set a slot for the given mortalityTables stored in a list + +\item \code{pensionTable}: Set a slot for all components of a pensionTable + +\item \code{NULL}: Empty dummy function that simply returns NULL +}} + -- GitLab