我有一个需要两个参数的函数:
Obs:独立变量始终是第一列
但是,如果用户给我一个名为 dataGiven 的数据框,其中列名称为:“剂量”、“重量”,我希望我的模型名称在结果中包含这些名称
我的实际函数正确地生成了 lm,但是数据框中的公式名称消失了(并显示了我如何从函数中获取数据)
Results_REG<- function (dataRead, variableChosen){
fit1 <- lm(formula = dataRead[,1]~dataRead[,variableChosen])
return(fit1)
}
Run Code Online (Sandbox Code Playgroud)
当我打电话时:
test1 <- Results_REG(dataGive, "Weight")
names(teste1$model)
Run Code Online (Sandbox Code Playgroud)
显示:
"dataRead[, 1]" "dataRead[, variableChosen]"
Run Code Online (Sandbox Code Playgroud)
我想显示我的数据框列名称,例如:
"Doses" "Weight"
Run Code Online (Sandbox Code Playgroud)
Mau*_*ers 10
首先,如果没有可重现的代码示例,总是很难提供帮助。对于未来的帖子,我建议您熟悉如何提供这样一个最小的可重复示例。
我不完全清楚你在问什么,所以我认为这是关于如何创建一个适合基于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
Run Code Online (Sandbox Code Playgroud)
您可以确认这给出了与以下相同的结果
lm(mpg ~ disp, data = mtcars)
Run Code Online (Sandbox Code Playgroud)
或者您可能会问如何传递预测变量的列名称?在这种情况下,我们可以用来构造一个与中的参数as.formula一起使用的公式。datalm
results_LM <- function(data, var) {
fm <- as.formula(paste(colnames(data)[1], "~", var))
lm(fm, data = data)
}
fit <- results_LM(mtcars, "disp")
fit
#Call:
#lm(formula = fm, data = data)
#
#Coefficients:
#(Intercept) disp
# 29.59985 -0.04122
names(fit$model)
#[1] "mpg" "disp"
Run Code Online (Sandbox Code Playgroud)