Как вызвать функцию с аргументом dlply?

Я хочу написать функцию, используя 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, cat2 а также cat3 имена категориальных переменных.

Спасибо за помощь.

Редактировать: поскольку функция стоит в данный момент, она не работает должным образом, потому что ".(cat1,arg1)" не "узнаваемый" в dlply, Нужны некоторые модификации, но как?

1 ответ

Решение

Пытаться c("cat1", arg1) вместо .(cat1, arg1),

Приводя ?dlply:

аргументы

.variables переменные для разделения фрейма данных, как указано в кавычках, формула или символьный вектор

Другие вопросы по тегам