r - 循环中 lm() 的字符串输入问题
问题描述
我有一个 for 循环,我每次都使用不同的自变量和因变量来运行线性回归。但是, lm() 函数不起作用,因为我相信我正在尝试输入字符串作为变量。我创建了这个简单的示例,以说明问题所在。假设 var1、var2 和 var3 是 dat 数据框中的列名。我不能直接输入列名,所以我必须将它们作为字符串分配给 R 变量。
dat <- read.csv("dat.csv")
x1 <- "var1"
x2 <- "var2"
y <- "var3"
lm(y ~ x1 + x2, data = dat) #error
我知道这里的问题是 R 尝试运行 lm("var3" ~ "var1" + "var2", data = dat)。我需要你的帮助来确定我应该在 y、x1 和 x2 上运行什么函数,这样 lm() 才能正常运行。
解决方案
您可以使用 指定字符串变量名称as.formula
,并将其传递给lm
.
x1 <- "var1"
x2 <- "var2"
y <- "var3"
fm <- as.formula(paste(y, "~", x1, "+", x2, sep=""))
lm(fm, data = dat)
推荐阅读
- mqtt - 连接后 Mqtt 客户端立即断开连接
- api - 隧道 IP 地址
- sql-server - Microsoft SQL Server:在大厅数据库中查找和更新确切值,即使它是 PRIMARY
- reactjs - React Router 卡在某条路线上
- elasticsearch - 如何使用 NEST (C#) 覆盖弹性中的扁平类型参数
- windows - 通过 BLE 将 Lopy 与 Windows 连接
- vue.js - 尝试在 VueJs 中禁用导航按钮时出错
- mysql - 如何根据开始和结束日期时间计算值之间的差异
- c++ - 在独立文件中编写c++模板函数,并用g++ -c编译
- python - 将布尔数组与布尔数组列表进行比较并返回索引(非元素比较)