Hi there: Just to tie this altogether. Here is the final function
f<- function (modelType, responseName, predictorNames, data, ..., envir = parent.frame()) { call <- match.call() call$formula <- formula(envir = envir, paste(responseName, sep = " ~ ", paste0("`", predictorNames, "`", collapse = " + "))) call[[1]] <- as.name(modelType) call$responseName <- NULL # omit responseName= call$predictorNames <- NULL # omit 'predictorNames=' eval(call, envir = envir) } Here I call the function to a list of predictor variables and one dependent variable. Note "glm" and not glm. z <- lapply(list(c("hp","drat"), c("cyl"), c("am","gear")), FUN=function(preds)f("glm", "carb", preds, data=mtcars, family='binomial')) I do get this error: Error in glm.control(modelType = "glm") : unused argument(s) (modelType = "glm") But lapply(z, summary) does seem to return a list of model summaries. It looks like it worked. I also tried. z <- lapply(list(c("hp","drat"), c("cyl"), c("am","gear")), FUN=function(preds)f("lm", "mpg", preds, data=mtcars)) Here, I get: 1: In lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) : extra argument ‘modelType’ is disregarded. 2: In lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) : extra argument ‘modelType’ is disregarded. 3: In lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) : extra argument ‘modelType’ is disregarded. But again, it actually looks like it worked. So, thank you very much! Yours, Simon Kiss On 2013-12-19, at 1:55 PM, Simon Kiss <sjk...@gmail.com> wrote: > Hello Bill, that is fantastic and it's quite a bit above what I could write. > Is there a way to make the model type an argument to the function so that you > can specify whether one is running glm, lm and such? > I tried to modify it by inserting an argument modelType below, but that > doesn't work. > Yours, simon Kiss >> f <- function (modelType, responseName, predictorNames, data, ..., envir = >> parent.frame()) >> { >> call <- match.call() >> call$formula <- formula(envir = envir, paste(responseName, sep = " ~ ", >> paste0("`", predictorNames, "`", collapse = " + "))) >> call[[1]] <- quote(modelType) # ' >> call$responseName <- NULL # omit responseName= >> call$predictorNames <- NULL # omit 'predictorNames=' >> eval(call, envir = envir) >> } > On 2013-12-18, at 3:07 PM, William Dunlap <wdun...@tibco.com> wrote: > >> f <- function (responseName, predictorNames, data, ..., envir = >> parent.frame()) >> { >> call <- match.call() >> call$formula <- formula(envir = envir, paste(responseName, sep = " ~ ", >> paste0("`", predictorNames, "`", collapse = " + "))) >> call[[1]] <- quote(glm) # 'f' -> 'glm' >> call$responseName <- NULL # omit responseName= >> call$predictorNames <- NULL # omit 'predictorNames=' >> eval(call, envir = envir) >> } >> as in >> z <- lapply(list(c("hp","drat"), c("cyl"), c("am","gear")), >> FUN=function(preds)f("carb", preds, data=mtcars, family=poisson)) >> lapply(z, summary) > > ********************************* > Simon J. Kiss, PhD > Assistant Professor, Wilfrid Laurier University > 73 George Street > Brantford, Ontario, Canada > N3T 2C9 > Cell: +1 905 746 7606 > > > ********************************* Simon J. Kiss, PhD Assistant Professor, Wilfrid Laurier University 73 George Street Brantford, Ontario, Canada N3T 2C9 Cell: +1 905 746 7606 ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.