在公式中显示字符串而不是 lm fit 中的变量

Mah*_*dav 2 r formula lm

我无法解决lm(sformula)执行时不显示分配给sformula. 我有一种感觉,它是 R 处理函数参数的通用方式,而不是特定于线性回归。

下面是通过示例对问题的说明。示例 1 具有不需要的输出lm(formula = sformula)。示例 2 是我想要的输出,即lm(formula = "y~x").

x <- 1:10
y <- x * runif(10)
sformula <- "y~x"

## Example: 1 
lm(sformula)

## Call:
## lm(formula = sformula)

## Example: 2
lm("y~x")

## Call:
## lm(formula = "y~x")
Run Code Online (Sandbox Code Playgroud)

李哲源*_*李哲源 5

怎么样eval(call("lm", sformula))

lm(sformula)
#Call:
#lm(formula = sformula)

eval(call("lm", sformula))
#Call:
#lm(formula = "y~x")
Run Code Online (Sandbox Code Playgroud)

一般来说,有一个data论据lm。让我们做:

mydata <- data.frame(y = y, x = x)
eval(call("lm", sformula, quote(mydata)))
#Call:
#lm(formula = "y~x", data = mydata)
Run Code Online (Sandbox Code Playgroud)

上述call()+eval()组合可以替换为do.call()

do.call("lm", list(formula = sformula))
#Call:
#lm(formula = "y~x")

do.call("lm", list(formula = sformula, data = quote(mydata)))
#Call:
#lm(formula = "y~x", data = mydata)
Run Code Online (Sandbox Code Playgroud)