如何在 R 的回归公式中使用变量?
How do you use variables in a regression formula in R?
如何在回归公式中使用变量?
例如,使用 'Animals' 数据集(在 MASS 中),以下工作正常:
data(Animals)
model <- lm(body ~ brain, data = Animals)
但我想做的是:
data(Animals)
x <- "body"
y <- "brain"
model <- lm(x ~ y, data = Animals)
这显然行不通,但我不知道我需要做什么。最终,我试图将公式放入一个循环中,并让它每次都 运行 不同。
抱歉,如果答案很明显 - 我已经搜索过但无法解决。
非常感谢
使用get
函数
lm(get(x) ~ get(y), data = Animals)
您需要根据您的字符值制定一个合适的公式。在这种情况下最简单的方法是 reformulate()
函数
reformulate(y,x)
# body ~ brain
然后您可以在 lm()
通话中使用它
lm(reformulate(y,x), data = Animals)
#
# Call:
# lm(formula = reformulate(y, x), data = Animals)
#
# Coefficients:
# (Intercept) brain
# 4316.32258 -0.06594
如何在回归公式中使用变量?
例如,使用 'Animals' 数据集(在 MASS 中),以下工作正常:
data(Animals)
model <- lm(body ~ brain, data = Animals)
但我想做的是:
data(Animals)
x <- "body"
y <- "brain"
model <- lm(x ~ y, data = Animals)
这显然行不通,但我不知道我需要做什么。最终,我试图将公式放入一个循环中,并让它每次都 运行 不同。
抱歉,如果答案很明显 - 我已经搜索过但无法解决。
非常感谢
使用get
函数
lm(get(x) ~ get(y), data = Animals)
您需要根据您的字符值制定一个合适的公式。在这种情况下最简单的方法是 reformulate()
函数
reformulate(y,x)
# body ~ brain
然后您可以在 lm()
通话中使用它
lm(reformulate(y,x), data = Animals)
#
# Call:
# lm(formula = reformulate(y, x), data = Animals)
#
# Coefficients:
# (Intercept) brain
# 4316.32258 -0.06594