Remi.b - 9 months ago 65

R Question

From these strings

`data = "mtcars"`

y = "mpg"

x = c("cyl","disp")

, I am trying to perform a linear model. I tried things like

`epp=function(x) eval(parse(text=paste0(x,collapse="+")))`

lm(data=epp(data),epp(y)~epp(x))

# Error in eval(expr, envir, enclos) : object 'cyl' not found

where the last line was aimed to be equivalent to

`lm(data=mtcars,mpg~cyl+disp)`

Answer

This involves two operations that are both described in multiple SO entries that use perhaps singly either the `get`

or `as.formula`

functions:

```
lm(data=get(data),
formula=as.formula( paste( y, "~", paste(x, collapse="+") ) )
)
```

In both cases you are use a text/character object to return a language object. In the first argument `get`

returns a 'symbol' that can be evaluated and in the second instance `as.formula`

returns a 'formula' object.

Source (Stackoverflow)