Это очень урезанная версия того, что я хочу сделать, я не могу вставить свою точную проблему, потому что код слишком длинный и сложный, но я думаю, что это является корнем проблемы. Благодаря ответу Джоша на этот вопрос Как вы кодируете функцию R, чтобы она «знала», как искать в «данных» переменные в других аргументах? Я отчасти здесь.
example <- function(model, xvar3=NULL, xvar4=NULL, data){
print(class(model))
#xvar3 <- eval(substitute(xvar3), envir=data, enclos=parent.frame())
#xvar4 <- eval(substitute(xvar4), envir=data, enclos=parent.frame())
print(class(xvar3))
xvar5 <- xvar4^2
mod <- glm( model + xvar3 + xvar5, data=data)
return(mod)
}
example(mpg ~ cyl, hp, wt, data=mtcars)
Это не удалось. Если вы удалите комментарии (основываясь на справке из предыдущего вопроса), это решит проблему «поиска» hp и wt. 'model' имеет формулу класса, и я хотел бы, чтобы она стала 'mpg ~ cyl + xvar3 + xvar5', чтобы glm работал. Но я не могу добавить их в формулу.
Я играл с классами 'call', а затем с 'eval' и 'as.formula' с вариациями 'paste' и 'noquote' и т. Д., Но не вижу, чтобы это стало возможным. 1008 *