在函数内的lm公式中传递动态变量名称

时间:2019-04-27 03:52:26

标签: r lm

我有一个要求两个参数的函数:

  • dataRead(来自用户的数据框)
  • variableChosen(用户要使用哪个因变量 在模型中)

糟糕:独立变量始终是第一列

但是,例如,如果用户给我一个名为dataGiven的数据框,则该列的名称为:“剂量”,“重量” 我希望我的模型名称在结果中包含这些名称

我的实际函数正确地创建了lm,但是我从数据框中获得的公式名称消失了(并显示了我如何从函数中获取数据)

    Results_REG<- function (dataRead, variableChosen){

      fit1 <- lm(formula = dataRead[,1]~dataRead[,variableChosen])

      return(fit1)
      }

当我打电话时:

    test1 <- Results_REG(dataGive, "Weight")
    names(teste1$model)

显示:

    "dataRead[, 1]"            "dataRead[, variableChosen]"

我想显示我的数据框列名称,例如:

    "Doses"            "Weight"

1 个答案:

答案 0 :(得分:0)

首先,没有reproducible code example总是很难提供帮助。对于以后的文章,我建议您熟悉如何提供这种最小的可重复示例。

我不清楚您要问的是什么,因此我假设这是关于如何基于单个用户选择的预测变量{{1}创建基于data的简单线性模型的函​​数}}。

以下是基于var

的示例
mtcars

您可以确认其结果与

相同
results_LM <- function(data, var) {
    lm(data[, 1] ~ data[, var])
}

results_LM(mtcars, "disp")
#Call:
#lm(formula = data[, 1] ~ data[, var])
#
#Coefficients:
#(Intercept)  data[, var]
#   29.59985     -0.04122

或者您正在问如何为预测变量使用列名?在这种情况下,我们可以使用lm(mpg ~ disp, data = mtcars) 来构造一个公式,该公式与as.formula中的data参数一起使用。

lm