I would like to get the list of variables of an expression: is that possible? ?I searched the help and the web without success. ?In practice, given an expression like expr = parse(text="x^2+y^3") I would like to have a function such as: vars(expr) returns c("x", "y") or a list like the one returned by formals(). Regards, -- Alberto
On Jun 15, 2010, at 5:45 PM, Alberto Lusiani wrote:> I would like to get the list of variables of an expression: is that > possible? I searched the help and the web without success. In > practice, given an expression like > > expr = parse(text="x^2+y^3") > > I would like to have a function such as: > > vars(expr) > > returns > > c("x", "y") or a list like the one returned by formals().attr(terms(formula(paste("~", "x^2+y^3"))), "variables") # returns list(x, y)> > Regards, > -- > Alberto > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code.David Winsemius, MD West Hartford, CT
On Jun 15, 2010, at 5:07 PM, David Winsemius wrote:> > On Jun 15, 2010, at 5:45 PM, Alberto Lusiani wrote: > >> I would like to get the list of variables of an expression: is that >> possible? I searched the help and the web without success. In >> practice, given an expression like >> >> expr = parse(text="x^2+y^3") >> >> I would like to have a function such as: >> >> vars(expr) >> >> returns >> >> c("x", "y") or a list like the one returned by formals(). > > attr(terms(formula(paste("~", "x^2+y^3"))), "variables") > # returns list(x, y) >A little easier:> all.vars(expression(x^2+y^3))[1] "x" "y" See ?all.vars for more information. HTH, Marc Schwartz
David and Marc, thanks, both your answers work for me. all.vars() is ideal for me as I can get a vector of characters which I can use as argument of deriv() to get a vector of derivatives of an expresssion for all its variables. On Wed, Jun 16, 2010 at 12:28 AM, Marc Schwartz <marc_schwartz at me.com> wrote:> On Jun 15, 2010, at 5:07 PM, David Winsemius wrote:[...] Greetings, -- Alberto