From 9a2237f5a75cdc24aa7c701e713f39694d658288 Mon Sep 17 00:00:00 2001 From: Chris Desjardins Date: Fri, 7 Dec 2018 11:52:37 -0600 Subject: [PATCH 1/2] Check is.mids() Check if the mice package is loaded, if it is proceed to to check if the data is is.mids() object. If so, get it in the appropriate format for runMI(). --- semTools/R/runMI.R | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/semTools/R/runMI.R b/semTools/R/runMI.R index d2b3ac20..8495c561 100644 --- a/semTools/R/runMI.R +++ b/semTools/R/runMI.R @@ -205,11 +205,23 @@ runMI <- function(model, data, fun = "lavaan", ..., } } else stop("Currently runMI only supports imputation by Amelia or mice") } else if (is.list(data)) { + if("mice" %in% (.packages())){ + if(is.mids(data)){ + m <- data$m + imputedData <- list() + for(i in 1:m){ + imputedData[[i]] <- complete(data, i) + } + imputeCall <- list() + class(imputedData) <- "list" + } + } else { seed <- integer(length = 0) imputeCall <- list() imputedData <- data m <- length(data) class(imputedData) <- "list" # override inheritance (e.g., "mi" if Amelia) + } } else if (is(data, "lavaan.mi")) { seed <- data@seed imputeCall <- data@imputeCall From 9e21c1b775890993cb8cc7bf708a5fb0ae647624 Mon Sep 17 00:00:00 2001 From: Terrence Date: Sat, 8 Dec 2018 00:39:11 +0100 Subject: [PATCH 2/2] check mice is attached before using complete() --- semTools/R/runMI.R | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/semTools/R/runMI.R b/semTools/R/runMI.R index 8495c561..7c04f3ce 100644 --- a/semTools/R/runMI.R +++ b/semTools/R/runMI.R @@ -1,5 +1,5 @@ ### Terrence D. Jorgensen -### Last updated: 1 September 2018 +### Last updated: 8 December 2018 ### runMI creates lavaan.mi object, inherits from lavaanList class @@ -205,22 +205,21 @@ runMI <- function(model, data, fun = "lavaan", ..., } } else stop("Currently runMI only supports imputation by Amelia or mice") } else if (is.list(data)) { - if("mice" %in% (.packages())){ - if(is.mids(data)){ - m <- data$m - imputedData <- list() - for(i in 1:m){ - imputedData[[i]] <- complete(data, i) - } - imputeCall <- list() - class(imputedData) <- "list" + if (is.mids(data)) { + m <- data$m + imputedData <- list() + requireNamespace("mice") + if (!"package:mice" %in% search()) attachNamespace("mice") + for (i in 1:m) { + imputedData[[i]] <- mice::complete(data, action = i, include = FALSE) } + imputeCall <- list() } else { - seed <- integer(length = 0) - imputeCall <- list() - imputedData <- data - m <- length(data) - class(imputedData) <- "list" # override inheritance (e.g., "mi" if Amelia) + seed <- integer(length = 0) + imputeCall <- list() + imputedData <- data + m <- length(data) + class(imputedData) <- "list" # override inheritance (e.g., "mi" if Amelia) } } else if (is(data, "lavaan.mi")) { seed <- data@seed