[R] obtaining output from an evaluated expression

Prof Brian Ripley ripley at stats.ox.ac.uk
Fri Dec 19 15:48:29 CET 2008


On Fri, 19 Dec 2008, Dieter Menne wrote:

> Jack Bowden <jack.bowden <at> mrc-bsu.cam.ac.uk> writes:
>
>> > dU1dtheta  <- deriv(~ xi-(alpha0+alpha1*gi), c("alpha0","alpha1"))
>> > eval(dU1dtheta)
>> (Intercept)
>>  -0.2547153
>> attr(,"gradient")
>>      alpha0 alpha1
>> [1,]     -1      0
>>
>> I want to extract the output gradient values of -1 and 0 but I don't
>> know how to access them. The only thing I can access is the intercept
>> term via.
>>
>> > eval(dU1dtheta)[1].
>
> It probably easiest to ask for a function to be returned using function.arg, as
> the example in deriv shows. Having been bitten by deriv in the past, I prefer to
> use it to give me the function or expression, and paste it explicitly into my
> code, doing some sanity check first. It's not very general, but tells you better
> what is happening.

But he is stil going to need to learn about attr():

attr(eval(dU1dtheta)[1], "gradient")

does the job (I presume, we don't have all the data in this message, nor I 
think in the previous one although you inexplicably silently removed the 
line that said gi = 0).

>
> Dieter
>
> ## function with defaulted arguments:
> (fx <- deriv(y ~ b0 + b1 * 2^(-x/th), c("b0", "b1", "th"),
>             function(b0, b1, th, x = 1:7){} ) )
> fx(2,3,4)
> attr(fx(2,3,4),"gradient")

-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595



More information about the R-help mailing list