context("mice.mids: newdata") # Check that mice.mids correctly appends the newdata to the # existing mids object init0 <- mice(nhanes, maxit = 0, m = 1, print = FALSE, seed = 1) init1 <- mice(nhanes, maxit = 0, m = 1, print = FALSE) init1$ignore <- rep(FALSE, nrow(nhanes)) init2 <- mice.mids(init0, newdata = nhanes, maxit = 0, print = FALSE) test_that("`newdata` works like rbind with ignore", { expect_equal(complete(rbind(init0, init1)), complete(init2)) }) imp <- mice(nhanes2, maxit = 0, m = 1, seed = 1) test_that("`newdata` produces warning `invalid factor level, NA generated`", { expect_silent(mice.mids(imp, newdata = nhanes2[1, ], print = FALSE)) }) # Check that rows flagged as ignored are indeed ignored by the # univariate sampler in mice.mids artificial <- data.frame( age = c(1, 1), bmi = c(NA, 40.0), hyp = c(1, 1), chl = c(200, 200), row.names = paste0("a", 1:2) ) imp1 <- mice(nhanes, maxit = 1, m = 1, print = FALSE, seed = 1, donors = 1L, matchtype = 0 ) imp2 <- mice.mids(imp1, newdata = artificial, maxit = 1, print = FALSE) imp2b <- mice.mids(imp1, newdata = artificial, maxit = 1, print = FALSE) test_that("`newdata` works with pmm", { expect_failure(expect_equal(complete(imp2)["a1", "bmi"], 40.0)) }) test_that("`newdata` returns filtered mids object", { expect_equal(nrow(complete(imp2)), nrow(artificial)) }) test_that("`newdata` uses a common seed", { expect_true(identical(complete(imp2), complete(imp2b))) })