[R] Help using mapply to run multiple models

Simon Kiss sjkiss at gmail.com
Thu Dec 19 19:55:39 CET 2013


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 <wdunlap at 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



More information about the R-help mailing list