From 7883c80b3b4b940eeeb198f39f476c50f5e190dc Mon Sep 17 00:00:00 2001 From: Janek Date: Tue, 29 Nov 2016 19:46:55 +0100 Subject: [PATCH 1/2] getrequiredParams --- R/getRequiredParams.R | 23 +++++++++++++++++++++++ tests/testthat/test_getRequiredParams.R | 21 +++++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 R/getRequiredParams.R create mode 100644 tests/testthat/test_getRequiredParams.R diff --git a/R/getRequiredParams.R b/R/getRequiredParams.R new file mode 100644 index 00000000..9346d550 --- /dev/null +++ b/R/getRequiredParams.R @@ -0,0 +1,23 @@ +#' @title Return all required params in a param set. +#' +#' @description +#' Returns all params which are required by the given [\code{\link{ParamSet}}]. +#' If no parameter is required in the param set an empty param set is returned. +#' +#' @template arg_parset +#' @return par.set [\code{\link{ParamSet}}]\cr +#' Parameter set. +#' @export +getRequiredParams = function(par.set) { + reqs = getRequirements(par.set) + # find all parameters that are in require in the param set at least once + all.reqs = unique(unlist(lapply(reqs, all.vars))) + # remove required parameters that are not in the par.set + all.reqs = intersect(getParamIds(par.set), all.reqs) + + # if no parameters are in require return an empty parameter set + if (is.null(all.reqs)) + makeParamSet() + else + filterParams(par.set, ids = all.reqs) +} diff --git a/tests/testthat/test_getRequiredParams.R b/tests/testthat/test_getRequiredParams.R new file mode 100644 index 00000000..ae08c17e --- /dev/null +++ b/tests/testthat/test_getRequiredParams.R @@ -0,0 +1,21 @@ +context("getRequiredParams") + +test_that("getRequiredParams", { + ps = makeParamSet( + makeIntegerParam("a", default = 1L), + makeIntegerParam("b", default = 1L, requires = quote(a == 1)), + makeIntegerParam("c", default = 1L, requires = quote(a == 2 && b == 1)) + ) + + + + expect_equal(getParamIds(getRequiredParams(ps)), c("a", "b")) + ps2 = filterParams(ps, ids = c("b", "c")) + expect_equal(getParamIds(getRequiredParams(ps2)), c("b")) + + ps2 = filterParams(ps, ids = c("c")) + expect_equal(getRequiredParams(ps2), makeParamSet()) + + ps2 = filterParams(ps, ids = character(0)) + expect_equal(getRequiredParams(ps2), makeParamSet()) +}) From dd35394d00b5747eeaa1bdacdb1d80677aaaf0cf Mon Sep 17 00:00:00 2001 From: Janek Date: Tue, 29 Nov 2016 20:01:59 +0100 Subject: [PATCH 2/2] remove wrong test --- tests/testthat/test_getRequiredParams.R | 21 --------------------- 1 file changed, 21 deletions(-) delete mode 100644 tests/testthat/test_getRequiredParams.R diff --git a/tests/testthat/test_getRequiredParams.R b/tests/testthat/test_getRequiredParams.R deleted file mode 100644 index ae08c17e..00000000 --- a/tests/testthat/test_getRequiredParams.R +++ /dev/null @@ -1,21 +0,0 @@ -context("getRequiredParams") - -test_that("getRequiredParams", { - ps = makeParamSet( - makeIntegerParam("a", default = 1L), - makeIntegerParam("b", default = 1L, requires = quote(a == 1)), - makeIntegerParam("c", default = 1L, requires = quote(a == 2 && b == 1)) - ) - - - - expect_equal(getParamIds(getRequiredParams(ps)), c("a", "b")) - ps2 = filterParams(ps, ids = c("b", "c")) - expect_equal(getParamIds(getRequiredParams(ps2)), c("b")) - - ps2 = filterParams(ps, ids = c("c")) - expect_equal(getRequiredParams(ps2), makeParamSet()) - - ps2 = filterParams(ps, ids = character(0)) - expect_equal(getRequiredParams(ps2), makeParamSet()) -})