miVariable list as the result of applying a function
to multiple imputations of its input.
miApply(X, FUN, ..., simplify = F, X.frame1)
TRUE the result is simplified if its imputations
are identical.
mi object whose imputations are such lists.
miList, for which each component
contains the result of evaluating
expr with a single
set of multiple imputations.
simplify=TRUE and all components are identical, then
just one component is returned (i.e. the
miList
is simplified to an ordinary object).
X.frame1 is supplied, then objects are saved on frame 1.
Each imputation of
X
is passed as the first (unnamed) argument to
FUN, together with the additional (possibly named) arguments.
The result is saved as one component in the returned list.
If
X.frame1 is supplied, then each imputation of
X.frame1
is
extracted and each component is saved in frame 1
before
FUN is called with the corresponding imputation of
X
.
At least one of
X and
X.frame1
must contain multiple imputations.
This argument is useful for certain modeling functions, which expect
imputations of the original data frame to be available when the
function is called.
x <- cholesterolImpExample[[3]]
miApply(x, mean, trim = .2)
miEval(mean(x, trim = .2))
miEval(mean(cholesterolImpExample[[3]], trim = .2))
# Compare miApply & miEval, use of X.frame1
fit1 <- miEval(glm(chol14 ~ ., data = cholesterolImpExample))
fit2 <- miApply(cholesterolImpExample,
function(x) glm(chol14 ~ ., data = x))
fit1[[3]]$call # Compare the calls. This one is fine.
fit2[[3]]$call # This one is not. Use X.frame1 later if needed.
rm(x) # avoid accidentally using unrelated "x"
miEval(summary(fit1))
miApply(fit2, summary) # same
miEval(predict(fit1, type = "terms"))
# miApply(fit2, predict, type = "terms") # fails, x not found
miApply(fit2, predict, type = "terms",
X.frame1 = list(x = cholesterolImpExample))
# Now matches the miEval result
# Had to use X.frame1 to match the original data to the name x.
# (and to cause each set of imputations to be used in turn).