Skip to content

obtaining output from an evaluated expression

3 messages · Jack Bowden, Dieter Menne, Brian Ripley

#
Hi

I am trying to use the deriv and eval functions to obtain the value of a 
function , say  "xi-(alpha0+alpha1*gi)" , differentiated with respect to 
alpha0 and alpha1, in the following way

# for gi = 0

 > 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].

I'm sorry if this is too basic a question for the list, but any help 
would be greatly appreciated

Jack
#
Jack Bowden <jack.bowden <at> mrc-bsu.cam.ac.uk> writes:
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.

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")
#
On Fri, 19 Dec 2008, Dieter Menne wrote:

            
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).