У меня есть основная функция, которая передает аргументы другой функции, которая использует rpart
для генерации модели. Я хотел бы иметь возможность указать rpart.control
из основной функции с помощью эллипса. Если нет cp
или minbucket
, то я хотел бы использовать значения по умолчанию для этих двух параметров.Передача аргументов функции с использованием эллипса и установка значения по умолчанию для некоторых, если они не существуют
До сих пор я не был успешным - см. Мой проект ниже. В настоящее время функция жалуется, что не найдено cp
. Я понимаю, почему, но не могу понять, как применять умолчания, если пользователь не предоставил собственные элементы управления.
require(rpart)
a <- function(df, ...) {
b(df, ...)
}
b <- function(df, ...) {
if (is.null(cp)) cp <- 0.001
if (is.null(minbucket)) minbucket = nrow(df)/20
rcontrol <- rpart.control(cp = cp, minbucket = minbucket, ...)
rcontrol
}
a(iris) # no controls set my defaults for cp and minbucket
a(iris, cp = 0.123) # set cp, use my default for minbucket
a(iris, cp = 0.123, minbucket = 100) # set cp, and minbucket
a(iris, maxcompete = 3) # use my defaults for cp and minbucket, but pass maxcompete