首页 > 解决方案 > 在 R 中的自定义函数中按用户定义的列表分组

问题描述

我正在尝试在 R 中创建一个自定义函数,让用户对数据集执行线性回归,我希望用户能够为要分组的数据输入变量,以便对数据集执行多个回归. 我遇到的问题是试图将用户定义的变量列表放入自定义函数中。下面我尝试使用“...”但是这不起作用。如果有人知道我应该如何解决这个问题,那就太好了。供参考 供参考 - lr.1 = 数据集 - ddate = x 变量 - alue = y 变量 - 数据应分组的变量)

`grouped.lr = function(lr.1,ddate, value, ...){

  test = lr.1 %>%
    group_by(...) %>%
    nest() %>%
    mutate(mod = map(data, fitmodel.test),
           pars = map(mod, tidy),
           pred = map(mod, augment))}`

标签: rregression

解决方案


似乎在这里使用公式可能很合适,因为它允许用户指定预测器-响应关系。

公式对象也被接受为各种模型的格式,因此可以直接传递给 lm() 函数。

# function training a linear model and a random forest
build_my_models <- function(formula, data) {

    lm.fit <- lm(formula, data)
    rf.fit <- randomForest(formula, data)

    return(list(lm.fit, rf.fit))
}

# data frame with three continuous variables
a <- rnorm(100)
b <- rnorm(100, mean = 2, sd = 4)
c <- 2*a + b

my_data <- data.frame(a = a, b = b, c = c)

# build the models
my_models <- build_my_models(a ~ ., my_data)

# here the formula 'a ~ .' defines the relation between response and predictors
# (the dot indicates that 'a' depends on all other variables in the data frame)

如果您想自己实现一个模型,那么坚持 R 的语法和约定绝不是一个坏主意。您可以查看有关如何根据您的特定需求解析公式的文档。


推荐阅读