如何解决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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。