r - 我可以使用 mapply 拟合不同的回归模型吗?
问题描述
我正在尝试查看是否可以使用 iris 数据集上的 mapply 函数拟合多个回归模型。
我首先定义我的回归模型:
reg<-function(dependent,independent){lm(eval(paste0(dependent,"~",independent,",data=iris")))}
然后我定义我的因变量和自变量向量:
dependent<-c("Sepal.Length","Sepal.Width")
independent<-c("Sepal.Width","Sepal.Length")
最后我尝试应用 mapply 函数:
models_reg<-mapply(reg,dependent,independent)
但是,我收到一条错误消息,声称:
Error in parse(text = x, keep.source = FALSE) :
<text>:1:25: unexpected ','
1: Sepal.Length~Sepal.Width,
是否有可能实现我的目标(使用 mapply 拟合不同的回归模型),在这种情况下,我做错了什么?
解决方案
您不需要在这里评估字符串。您可以将公式作为字符串传递lm
:
reg<- function(dependent,independent) {
lm(paste0(dependent,"~",independent),data=iris)
}
构造公式的另一种方法是使用reformulate
:
reg<-function(dependent,independent) {
lm(reformulate(independent, dependent),data=iris)
}
现在您可以使用以下方式调用Map
:
Map(reg, dependent, independent)
#$Sepal.Length
#Call:
#lm(formula = reformulate(independent, dependent), data = iris)
#Coefficients:
#(Intercept) Sepal.Width
# 6.5262 -0.2234
#$Sepal.Width
#Call:
#lm(formula = reformulate(independent, dependent), data = iris)
#Coefficients:
# (Intercept) Sepal.Length
# 3.41895 -0.06188
推荐阅读
- sql - thrift 服务器客户端上的 SQL 查询问题
- reactjs - 父导航器中的 DrawerActions.toggleDrawer()
- shiny - Shiny App - 将输入条目保存为变量并在代码中使用它
- mysql - 主键以字母开头并获取最后一条记录的排序表
- xcode - SwiftUI:如何在 MacOs 中设置图像?
- ruby-on-rails - 预期响应为 <2XX:success>,但控制器测试为 <403: Forbidden>
- node.js - 如何使用 NodeJS MONGODB 修复“无法获取”
- angular - 如何使用 anularr 9 将 datzs 转换为 jason 格式
- javascript - React 中对话框聊天机器人的自定义 UI
- pyomo - [Pyomo]如何通过循环生成约束