On Dec 19, 2013, at 11:30 AM, David Winsemius wrote: > > On Dec 19, 2013, at 11:10 AM, William Dunlap wrote: > >>>> call[[1]] <- quote(modelType) # ' >> >> makes call[[1]] the same as as.name("modelType"). You want >> as.name(modelType). > > Just so I can see if I understand ... that is because `as.name` will evaluate > `modelType` whereas as.name("modelType") would look for the function > `modelType` and not find such a name in the namespace? So modelType needs to > be a language-object and `f` needs to be called with: > > f(glm, ....) rather than f("glm", ...)
Reading `?as.name` (again) I've decided that must be wrong. either one should return the same value if teh argument is first converted to a character value. -- David. > > >> >> Bill Dunlap >> Spotfire, TIBCO Software >> wdunlap tibco.com >> >> >>> -----Original Message----- >>> From: Simon Kiss [mailto:sjk...@gmail.com] >>> Sent: Thursday, December 19, 2013 10:56 AM >>> To: William Dunlap >>> Cc: Dennis Murphy; r-help@r-project.org >>> Subject: Re: [R] Help using mapply to run multiple models >>> >>> 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) >>> David Winsemius Alameda, CA, USA ______________________________________________ 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.