Создайте набор параметров, используя функцию "makeParamSet" с параметрами, уже определенными в функции - PullRequest
0 голосов
/ 09 октября 2019

Я выполняю выборку из латинского гиперкуба из функций "makeParamSet" и "generateDesign" (пакет "ParamHelpers") в R. Используя функцию “makeParamSet”, как я могу включить переменную, которая уже указана в аргументе “parameters”функции? Вот пример, где "b" должно быть включено от 0 до "a":

set.seed(1)
ps <- makeParamSet(makeNumericParam("a", lower=200, upper=500), makeNumericParam("b", lower=0, upper="a"))
Y <- generateDesign(100, ps)
test <- data.frame(a = round(runif(5, min=200, max=500)), b = NA)

> test
    a  b
1 280 NA
2 312 NA
3 372 NA
4 472 NA
5 261 NA

Проблема :

Код ps <- makeParamSet(makeNumericParam("a", lower=200, upper=500), makeNumericParam("b", lower=0, upper="a")) не работает.

Ожидаемый результат :

В 1-й строке фрейма данных "test", "b" должно быть в диапазоне от 0 до 280.

Во 2-й строке фрейма данных "test", "b" должно быть в диапазоне от 0 до 312.

В 3-й строке фрейма данных "test", "b" должно быть в диапазоне от 0 до 372.

...

1 Ответ

0 голосов
/ 09 октября 2019

Необходимо указать границу для b как «запрещенную область». Например,

set.seed(1)
ps <- makeParamSet(makeNumericParam("a", lower=200, upper=500),
                   makeNumericParam("b", lower=0, upper=500), 
                   forbidden = quote(b > a))
Y <- generateDesign(100, ps)

В соответствии с документацией в ?makeNumericParam, вы также должны быть в состоянии сделать это с require = quote(b < a) в вызове makeNumericParam, но я нашел это значение NA врезультат, если у меня также не было аргумента forbidden.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...