[R] Unable to pass Object Arguments to UniRoot()

Bert Gunter bgunter.4567 at gmail.com
Tue Aug 11 05:20:46 CEST 2015


??

?uniroot tells you exactly what uniroot() expects as arguments. Unless
I misunderstand, your query seems totally unrelated to the way
uniroot() works.

Also, stop posting to Nabble and post to this (plain text) list. We
have no idea of what the Nabble contexts are, and many of us won't
even bother to read such posts for that reason.

Cheers,
Bert


Bert Gunter

"Data is not information. Information is not knowledge. And knowledge
is certainly not wisdom."
   -- Clifford Stoll


On Mon, Aug 10, 2015 at 3:26 AM, Bazman76 <h_a_patience at hotmail.com> wrote:
> Hi there,
>
> I'd like to be able to pass an entire object to uniroot() as one of the
> arguments. Unfortunately to recreate my precise error would be rather
> involved. So I present a simplified version below:
>
> To create a structured object let the output from the lm() function use this
> simple code:
>
>     year <- c(2000 ,   2001  ,  2002  ,  2003 ,   2004)
>     rate <- c(9.34 ,   8.50  ,  7.62  ,  6.93  ,  6.60)
>     fit <- lm(rate ~ year)
>
>
>     When I try to pass this to uniroot:
>
>     OptLam<-uniroot(f=LamOpt, interval=c(0.0001,120),
> tol=0.0000000000000001, MLEObj=fit )
>
> I get the following error
>
> Error in f(lower, ...) :
>   unused argument(s) (MLEObj = list(coefficients = c(1419.2079999999,
> -0.704999999999952), residuals =
>
> This seems to be specific to uniroot I have tested my own functions and they
> happily accept objects like fit. The function LamOpt is not supposed to work
> with a object created by lm() I've just used lm() as a simple example so
> don't worry about the results that LamOpt produces, if I can pass one object
> like fit to uniroot then I assume I can pass any object.
>
> It seems that uniroot must be expecting an object of a certain size, would
> it therefore be possible to use something analogous to pointers in c/c++ and
> pass the object by reference so only a pointer to the object is passed
> rather than the object itself?
>
>
>
>     LamOpt<-function(lambda,MLEobj){
>
>     x <- c(3,6,9,12,15,18,21,24,30,36,48,60,72,84,96,108,120)
>
>     #MLEObj<-kemfit
>     ## Cross-sectional model (Nelson and Siegel)
>     #lambda <- 0.0609
>     h2 <- function(x){(1-exp(-lambda*x))/(lambda*x)}
>     h3 <- function(x){((1-exp(-lambda*x))/(lambda*x)) - exp(-lambda*x)}
>     X=cbind(rep(1,m), h2(x), h3(x)) #obs
>
>     Z <- matrix(as.list(X), ncol = 3)
>
>     MLEObj$par$Z=Z
>
>     kf_iter = MARSSkf(MLEobj)
>
>     return(-kf_iter$logLik)
>     }
>
> Thanks
>
> Baz
>
>
>
>
>
> --
> View this message in context: http://r.789695.n4.nabble.com/Unable-to-pass-Object-Arguments-to-UniRoot-tp4710938.html
> Sent from the R help mailing list archive at Nabble.com.
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.



More information about the R-help mailing list