aboutsummaryrefslogtreecommitdiff
path: root/R
diff options
context:
space:
mode:
authorJohannes Ranke <jranke@uni-bremen.de>2022-10-14 16:20:42 +0200
committerJohannes Ranke <jranke@uni-bremen.de>2022-10-14 16:21:45 +0200
commitc03fa5d4e57033869cb437c1154da31abd96fc50 (patch)
tree78c034cf3a04deb8b1dc943df70e061245d26bcb /R
parentb76e401a854021eaeda6f8ba262baf37b4ecfac2 (diff)
update method for mhmkin objects, clarify comment
Diffstat (limited to 'R')
-rw-r--r--R/mhmkin.R23
-rw-r--r--R/saem.R4
2 files changed, 25 insertions, 2 deletions
diff --git a/R/mhmkin.R b/R/mhmkin.R
index 2cf9ba06..2df01f0c 100644
--- a/R/mhmkin.R
+++ b/R/mhmkin.R
@@ -203,3 +203,26 @@ BIC.mhmkin <- function(object, ...) {
dimnames(res) <- dimnames(object)
return(res)
}
+
+#' @export
+update.mhmkin <- function(object, ..., evaluate = TRUE) {
+ call <- attr(object, "call")
+
+ update_arguments <- match.call(expand.dots = FALSE)$...
+
+ if (length(update_arguments) > 0) {
+ update_arguments_in_call <- !is.na(match(names(update_arguments), names(call)))
+ }
+
+ for (a in names(update_arguments)[update_arguments_in_call]) {
+ call[[a]] <- update_arguments[[a]]
+ }
+
+ update_arguments_not_in_call <- !update_arguments_in_call
+ if(any(update_arguments_not_in_call)) {
+ call <- c(as.list(call), update_arguments[update_arguments_not_in_call])
+ call <- as.call(call)
+ }
+ if(evaluate) eval(call, parent.frame())
+ else call
+}
diff --git a/R/saem.R b/R/saem.R
index 99712c92..5256f6b5 100644
--- a/R/saem.R
+++ b/R/saem.R
@@ -635,8 +635,8 @@ logLik.saem.mmkin <- function(object, ...) return(logLik(object$so))
update.saem.mmkin <- function(object, ..., evaluate = TRUE) {
call <- object$call
# For some reason we get saem.mmkin in the call when using mhmkin
- # so we need to fix this in order to avoid exporting saem.mmkin
- # in addition to the S3 method
+ # so we need to fix this so we do not have to export saem.mmkin in
+ # addition to the S3 method
call[[1]] <- saem
update_arguments <- match.call(expand.dots = FALSE)$...

Contact - Imprint