在函数内部或外部运行lm()时,结果不同

时间:2018-08-07 16:21:09

标签: r

功能:

linear_regression <- function(dataframe, target) {

  model = lm(target ~ .,data = dataframe)

  return(model)

}

我正在使用名为test2的数据框,目标列称为DP_POWER- DP_POWER

在外部运行此

lm(test2$`DP_POWER- DP_POWER` ~ .,data = test2)

产生

Call:
lm(formula = test2$`DP_POWER- DP_POWER` ~ ., data = test2)

Coefficients:
                                  (Intercept)  `OTHER VARIABLE`  
                                     1154.789                                          1.134  

通过调用以下命令在函数内部运行

linear_regression(dataframe = test2, target = test2$`DP_POWER- DP_POWER`)

返回

Call:
lm(formula = target ~ ., data = dataframe)

Coefficients:
                                  (Intercept)                           `DP_POWER- DP_POWER`  
                                   -1.807e-10                                      1.000e+00  
`OTHER VARIABLE`  
                                   -1.552e-15  

您可以清楚地看到,由于某种原因运行我的用户自定义函数会计算DP_POWER- DP_POWER,而在控制台中运行则不会。

为什么会发生这种情况,如何预防呢?

1 个答案:

答案 0 :(得分:1)

在李哲源建议使用as.formula(paste())时,借助李哲源的解决方法

linear_regression <- function(dataframe, target) {

  model = lm(as.formula(paste(target, '~ .')),data = dataframe)

  return(model)

}