循环中lm()的字符串输入问题
Problem with character string input for lm () in a loop
我有一个 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() 运行s 正确。
您可以使用 as.formula
指定字符串变量名称,并将其传递给 lm
。
x1 <- "var1"
x2 <- "var2"
y <- "var3"
fm <- as.formula(paste(y, "~", x1, "+", x2, sep=""))
lm(fm, data = dat)
我有一个 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() 运行s 正确。
您可以使用 as.formula
指定字符串变量名称,并将其传递给 lm
。
x1 <- "var1"
x2 <- "var2"
y <- "var3"
fm <- as.formula(paste(y, "~", x1, "+", x2, sep=""))
lm(fm, data = dat)