[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