[R] Substitution in expressions

peter dalgaard pd@|gd @end|ng |rom gm@||@com
Tue Mar 26 15:40:12 CET 2019


I think mapply() is fine. You could do 

> Vectorize(function(x,y) as.expression(bquote(.(x)^.(y))))(base,expo)
expression(1L^2, 2L^2, 3L^3, 4L^3, 5L^4)

but it is really not that much clearer and does mapply() internally anyway. There's no automatic vectorization in substitute/bquote, so you do need to do it manually. 

(You might have hoped that Vectorize(function(x,y) substitute(x^y)) would work, but it doesn't)

-pd


> On 26 Mar 2019, at 15:04 , Viechtbauer, Wolfgang (SP) <wolfgang.viechtbauer using maastrichtuniversity.nl> wrote:
> 
> Apologies for not being clearer. The code does what I want, but I was wondering if there is a simpler way of doing this, using substitute()/bquote() directly without the mapply().
> 
> Best,
> Wolfgang
> 
> -----Original Message-----
> From: peter dalgaard [mailto:pdalgd using gmail.com] 
> Sent: Tuesday, 26 March, 2019 14:42
> To: Viechtbauer, Wolfgang (SP)
> Cc: r-help mailing list
> Subject: Re: [R] Substitution in expressions
> 
> Er, I'm confused.
> 
> You post some code, the code does something. In which sense is this not what you want?
> 
> This is slightly more direct:
> 
>> mapply(function(x,y) as.expression(bquote(.(x)^.(y))), base, expo)
> expression(1L^2, 2L^2, 3L^3, 4L^3, 5L^4)
> 
> but I sense that you are looking for something else?
> 
> -pd
> 
>> On 26 Mar 2019, at 14:27 , Viechtbauer, Wolfgang (SP) <wolfgang.viechtbauer using maastrichtuniversity.nl> wrote:
>> 
>> Hi All,
>> 
>> I am trying to create a vector of expressions, where the elements in the expressions are contained in other vectors (i.e., they should be substituted). I made some attempts with substitute() and bquote(), but couldn't get this to work. My solution so far is:
>> 
>> base <- 1:5
>> expo <- c(2,2,3,3,4)
>> exvec <- as.expression(unname(mapply(function(x,y) bquote(.(x)^.(y)), base, expo)))
>> 
>> plot(NA, NA, xlim=c(0,6), ylim=c(0,2))
>> text(1:5, 1, exvec)
>> 
>> Any ideas how I could get this to work with substitute() and/or bquote()?
>> 
>> Best,
>> Wolfgang

-- 
Peter Dalgaard, Professor,
Center for Statistics, Copenhagen Business School
Solbjerg Plads 3, 2000 Frederiksberg, Denmark
Phone: (+45)38153501
Office: A 4.23
Email: pd.mes using cbs.dk  Priv: PDalgd using gmail.com



More information about the R-help mailing list