Я хотел бы передать правую часть формулы функции R, которая затем «добавляет» левую часть формулы и вызывает gam()
. Я хотел бы достичь этого без уродливых конструкций asforma() и т. Д.Как передать правую часть формулы другой формуле?
Я застрял в следующем минимальном примере, знаете ли вы, что пошло не так?
require(mgcv)
set.seed(0) ## set.seed(1)
gamEx1 <- gamSim(1, n=400, dist="normal", scale=2) ## simulate some data
str(gamEx1) ## display structure
## calling gam() and passing the right-hand side of a formula
gamFitter <- function(formula.RHS, data, ...){
z <- 2*data$y + data$f0 # some given values
gam(z ~ formula.RHS, data=data, ...) # call gam()
}
## call the function with the right-hand side of a formula
gamFitter(formula.RHS=~s(x0)+s(x1)+s(x2)+s(x3), data=gamEx1)
Error in model.frame.default(formula = z ~ formula.RHS, data = data,
drop.unused.levels = TRUE) :
invalid type (language) for variable 'formula.RHS'
Спасибо, Дерек, я не знал, что эта функция существует. –
@MariusHofert Мне кажется, этот ответ более изящный, чем принятый в настоящее время. Не могли бы вы пересмотреть принятие? – Andrie