首页 > 解决方案 > 循环中 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() 才能正常运行。

标签: rregressionlinear-regression

解决方案


您可以使用 指定字符串变量名称as.formula,并将其传递给lm.

x1 <- "var1"
x2 <- "var2"
y <- "var3"

fm <- as.formula(paste(y, "~", x1, "+", x2, sep=""))

lm(fm, data = dat)

推荐阅读