Nic*_* A. 1 regression r linear-regression lm
创建调用该lm()函数的函数时遇到问题:
regresionLineal <- function (vardep, varindep1, varindep2, DATA) {
lm(vardep ~ varindep1 + varindep2, data = DATA)
}
Run Code Online (Sandbox Code Playgroud)
然后我使用我之前创建的数据帧中的数据调用它(DATOS)...
regresionLineal(Estatura, Largo, Ancho, DATOS)
Run Code Online (Sandbox Code Playgroud)
eval(expr,envir, enclos) 中的错误:找不到对象 'Estatura' 调用自:eval(expr,envir, enclos)
欢迎任何帮助...
你应该做:
regresionLineal <- function (vardep, varindep1, varindep2, DATA) {
lm(paste(vardep, "~", varindep1, "+", varindep2), data = DATA)
}
Run Code Online (Sandbox Code Playgroud)
您将vardep, varindep1,varindep2作为字符串传入的位置。例如,我使用 R 的内置trees数据集:
regresionLineal("Height", "Girth", "Volumn", trees)
# Call:
# lm(formula = paste(vardep, "~", varindep1, "+", varindep2), data = DATA)
# Coefficients:
# (Intercept) Girth Volume
# 83.2958 -1.8615 0.5756
Run Code Online (Sandbox Code Playgroud)
但是,我不明白我们为什么要这样做。如果我们必须指定公式中的每个变量,为什么不简单地传入一个完整的公式呢?在这种情况下,您可以lm()直接使用而无需定义自己的函数。