An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-devel/attachments/20110407/ef9b3064/attachment.pl>
anyway to get R unevaluated expr independent on arguments
3 messages · Zheng, Xin (NIH) [C], Simon Urbanek
On Apr 7, 2011, at 5:18 PM, Zheng, Xin (NIH) [C] wrote:
Hi there, Suppose the cmd is "a<-3", I can parse the cmd sexp with R_ParseVector and eval it. My question is - is it possible to parse a cmd like "a <- ?", afterwards evaluation will give corresponding result depend on different argument? In other words, '?' is just a placeholder.
Well, you can use a dummy symbol and replace it later, e.g. parse "a <- `*dummy*`" and then before you evaluate you simply replace all occurrences of the "*dummy*" symbol with any value you want.
That said, we are in a functional language, so you can actually do it more natively by using a closure like "function(.var1){ a <- .var1 }" - that saves you the substitution part and is more clean.
Cheers,
Simon
Thank you very much. I learned a lot. Regards, Xin -----Original Message----- From: Simon Urbanek [mailto:simon.urbanek at r-project.org] Sent: Thursday, April 07, 2011 5:42 PM To: Zheng, Xin (NIH) [C] Cc: r-devel at r-project.org Subject: Re: [Rd] anyway to get R unevaluated expr independent on arguments
On Apr 7, 2011, at 5:18 PM, Zheng, Xin (NIH) [C] wrote:
Hi there, Suppose the cmd is "a<-3", I can parse the cmd sexp with R_ParseVector and eval it. My question is - is it possible to parse a cmd like "a <- ?", afterwards evaluation will give corresponding result depend on different argument? In other words, '?' is just a placeholder.
Well, you can use a dummy symbol and replace it later, e.g. parse "a <- `*dummy*`" and then before you evaluate you simply replace all occurrences of the "*dummy*" symbol with any value you want.
That said, we are in a functional language, so you can actually do it more natively by using a closure like "function(.var1){ a <- .var1 }" - that saves you the substitution part and is more clean.
Cheers,
Simon