The substitute function in R
creates a language object in the form of a tree that one can parse. How can I create the tree from scratch using list or else to then g
> plus <- .Primitive("+")
> plus
function (e1, e2) .Primitive("+")
> times=.Primitive("*")
> eval(call("plus", b, call("times",2, b)))
[1] 6
> eval(call("plus", a, call("times",2, b)))
[1] 5
There are a few ways you could construct R expressions programmatically. The most convenient, if it works for your case, is bquote
:
> a = 1
> bquote(.(a) + .(a))
1 + 1
where .()
is an inverse-quote. This should work for practically anything, but if it does not, there are ways to manually construct the basic building blocks of expressions:
> as.symbol('f')
f
> as.call(list(quote(f), 1, 2))
f(1, 2)
> as.call(list(as.symbol('{'), 1, 2))
{
1
2
}
>