【问题标题】:Problem with character string input for lm () in a loop循环中 lm() 的字符串输入问题
【发布时间】:2021-05-07 06:04:29
【问题描述】:

我有一个 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() 才能正常运行。

【问题讨论】:

    标签: r regression linear-regression


    【解决方案1】:

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

    x1 <- "var1"
    x2 <- "var2"
    y <- "var3"
    
    fm <- as.formula(paste(y, "~", x1, "+", x2, sep=""))
    
    lm(fm, data = dat)
    

    【讨论】:

    • fm &lt;- reformulate(c(x1, x2), y)
    猜你喜欢
    • 2023-03-14
    • 1970-01-01
    • 2012-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-13
    • 1970-01-01
    相关资源
    最近更新 更多