功能:
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,而在控制台中运行则不会。
为什么会发生这种情况,如何预防呢?
答案 0 :(得分:1)
在李哲源建议使用as.formula(paste())时,借助李哲源的解决方法
linear_regression <- function(dataframe, target) {
model = lm(as.formula(paste(target, '~ .')),data = dataframe)
return(model)
}