我正在编写一个函数,在其中包含多个函数(使用caret包来训练和测试多个模型的包装器)。
问题是,有时我想使用默认参数,有时我想指定自己的参数。在我的情况下,有时我想修改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, "(),") ) )
如果您有任何想法,请告诉我。
data(Boston) glmBoostGrid = data.frame(mstop = floor((1:10) * 50), prune = "no") train(form= medv~., data = Boston, method = "glmboost", tuneGrid = glmBoostGrid )
例如,有时我想使用默认网格,有时我则不想使用。 - Raad