表示式串,而不是作为在LM拟合变量表示式串,而不是作为在LM拟合变量(Showing string

2019-05-12 13:39发布

我不能够解决问题,当lm(sformula)被执行时,它不会显示分配给该字符串sformula 。 我有一种感觉是一般的渠道 - 处理函数的参数,而不是特定的线性回归。

下面是这个问题,通过实施插图。 例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")

Answer 1:

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

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

eval(call("lm", sformula))
#Call:
#lm(formula = "y~x")

一般来讲有一个data为参数lm 。 让我们做:

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

上述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)


文章来源: Showing string in formula and not as variable in lm fit
标签: r formula lm