Я пишу функцию с несколькими функциями внутри нее (обертка для обучения и тестирования нескольких моделей с пакетом каретки).Передача оператора if в качестве аргумента функции в R
Проблема в том, что иногда я хотел бы использовать аргументы по умолчанию, и иногда я хотел бы указать свой собственный. В моем случае иногда я хочу изменить tuneGrid, и иногда я хочу использовать сетку по умолчанию. Я не могу использовать эллипсы (...), чтобы передать этот аргумент для этого, потому что каждая модель нуждается в отдельной сетке.
Как включить аргумент if в аргументы функций для этого? Например,
family = NULL
y <- rnorm(1000); x <- rnorm(1000)
glm(formula=y~x, if(!is.null(family)){family=family}, data=data.frame(x=x, y=y))
Это не работает по ряду причин, но я надеюсь, что вы получите эту идею. Я пытаюсь использовать что-то вроде этого, а не в качестве второго аргумента для объяснения запятых:
noquote(ifelse(!is.null(family), paste0(noquote("family="), family, "(),")))
Пожалуйста, дайте мне знать, если у вас есть какие-либо идеи.
Почему вы не можете просто оставить его без функции, а не быть NULL? Отсутствующие аргументы передаются другим функциям. Не могли бы вы показать полную функцию, содержащую код 'family = NULL ... '? –
Это довольно длинный код, поэтому может быть не полезно, если я его разместил. В основном, что я пытаюсь сделать, это собрать кучу разных моделей, а затем проверить их. (К сожалению, я попал войти случайно) данные (Бостон) glmBoostGrid = data.frame (MSTOP = пол ((1:10) * 50), чернослив = "нет") поезда (форма = MEDV ~., данные = Бостон, метод = "glmboost", tuneGrid = glmBoostGrid ) Так, например, иногда я хочу использовать сетку по умолчанию, а иногда нет. – Raad