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)