2

我希望编写一个函数dlply来拟合分层的线性回归

"cat1 by arg1"

所以我的功能看起来像这样

fun1 <- function(arg1) {
     m1 <- data.frame(...) 
     mod.var <- ...
     mod.form <- formula(paste("y ~", paste(mod.var, collapse = " + ")))
     list_of_models <- dlply(m1, .(cat1,arg1), function(X) lm(mod.form, data = X, 
          na.action=na.omit), .parallel=FALSE) 
}

如何编写一个函数,以便当我调用该函数时fun1("cat2")该函数将执行

list_of_models <- dlply(m1, .(cat1,cat2), function(X) lm(mod.form, data = X,
    na.action = na.omit), .parallel=FALSE)

并调用该函数fun1("cat3"),该函数将执行

list_of_models <- dlply(m1,.(cat1,cat3), function(X) lm(mod.form, data = X,
    na.action=na.omit), .parallel=FALSE)

其中cat1和是分类变量的名称cat2cat3

感谢您的帮助。

编辑:由于该功能目前,它无法正常工作,因为".(cat1,arg1)"dlply. 需要进行一些修改,但是如何修改?

4

1 回答 1

4

尝试c("cat1", arg1)代替.(cat1, arg1).

引用?dlply

论据

.variables variables to split data frame by, as quoted variables, a formula or character vector

于 2011-05-27T11:14:48.307 回答