Showing string in formula and not as variable in lm fit

╄→гoц情女王★ 提交于 2019-12-17 10:09:08

问题


I am not able to resolve the issue that when lm(sformula) is executed, it does not show the string that is assigned to sformula. I have a feeling it is generic way R handles argument of a function and not specific to linear regression.

Below is the illustration of the issue through examples. Example 1, has the undesired output lm(formula = sformula). The example 2 is the output I would like i.e., 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")

回答1:


How about eval(call("lm", sformula))?

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

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

Generally speaking there is a data argument for lm. Let's do:

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

The above call() + eval() combination can be replaced by 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)


来源:https://stackoverflow.com/questions/38558523/showing-string-in-formula-and-not-as-variable-in-lm-fit

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!