rxTest({ test_that("'drop' test", { ode <- rxode2(" d/dt(X) = a*X + Y*Z; d/dt(Y) = b*(Y - Z); d/dt(Z) = -X*Y + c*Y - Z;") et <- eventTable() # default time units et$add.sampling(seq(from = 0, to = 10, by = 1)) out0 <- rxSolve(ode, params = c(a = -8 / 3, b = -10, c = 28), events = et, inits = c(X = 1, Y = 1, Z = 1) ) out <- rxSolve(ode, params = c(a = -8 / 3, b = -10, c = 28), events = et, inits = c(X = 1, Y = 1, Z = 1), drop = "X" ) expect_equal(names(out), c("time", "Y", "Z")) expect_equal(out$time, out0$time) expect_equal(out$Y, out0$Y) expect_equal(out$Z, out0$Z) out <- rxSolve(ode, params = c(a = -8 / 3, b = -10, c = 28), events = et, inits = c(X = 1, Y = 1, Z = 1), drop = c("X", "Y") ) expect_equal(names(out), c("time", "Z")) expect_equal(out$time, out0$time) expect_equal(out$Z, out0$Z) expect_warning(rxSolve(ode, params = c(a = -8 / 3, b = -10, c = 28), events = et, inits = c(X = 1, Y = 1, Z = 1), drop = c("X", "Y", "ww") )) expect_warning(rxSolve(ode, params = c(a = -8 / 3, b = -10, c = 28), events = et, inits = c(X = 1, Y = 1, Z = 1), drop = c("X", "Y", "ww"), warnDrop = FALSE ), NA) expect_warning(rxSolve(ode, params = c(a = -8 / 3, b = -10, c = 28), events = et, inits = c(X = 1, Y = 1, Z = 1), drop = "time" )) }) })