> I do get this error: > Error in glm.control(modelType = "glm") : > unused argument(s) (modelType = "glm")
Add the line call$modelType <- NULL # omit modelType argument to your function. Otherwise f("glm", ...) makes the call glm(modelType="glm", ...) where you want it to make the call glm(...) Bill Dunlap Spotfire, TIBCO Software wdunlap tibco.com > -----Original Message----- > From: Simon Kiss [mailto:sjk...@gmail.com] > Sent: Thursday, December 19, 2013 1:49 PM > To: William Dunlap > Cc: Dennis Murphy; r-help@r-project.org > Subject: Re: [R] Help using mapply to run multiple models > > 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.