[R] About Passing Arguments to Function
Charilaos Skiadas
cskiadas at gmail.com
Fri May 23 03:36:57 CEST 2008
On May 22, 2008, at 9:14 PM, Edward Wijaya wrote:
> Hi,
>
> Below I have a function mlogl_k,
> later it's called with "nlm" .
>
> __BEGIN__
> vsamples<- c(14.7, 18.8, 14, 15.9, 9.7, 12.8)
>
> mlogl_k <- function( k_func, x_func, theta_func, samp) {
> tot_mll <- 0
> for (comp in 1:k_func) {
> curr_mll <- (- sum(dgamma(samp, shape = x_func,
> scale=theta_func, log = TRUE)))
> tot_mll <- tot_mll + curr_mll
> }
>
> tot_mll
> }
>
> # Calling the function above
> mlogl_out <- nlm(mlogl_k, mean(vsamples), k_func =2, x_func = 1,
> theta_func = 1, samp=vsamples)
>
> __END__
>
> I thought under NLM, I already assign
> the parameter correctly.
> However it gives me the following error.
>
> Error in f(x, ...) : unused argument(s) (14.3166666666667)
> Calls: nlm -> <Anonymous> -> f
> Execution halted
>
>
> What's wrong with my code above?
nlm passes the following values over to mlogl_k: mean(vsamples),
k_func =2, x_func = 1, theta_func = 1, samp=vsamples
Now, f is called with these arguments, and all its arguments are
matched by the named arguments. Then it does not know what to do with
the "mean(vsamples)" argument. Hence the error: f is called with one
more argument than it can handle.
It is not clear with respect to what variables you want the
minimization. Right now all the named variables are treated as
constants, and there is no variable left with respect to which
mlogl_k is supposed to be maximized. Read the documentation for nlm
carefully: Your function should have one more argument (like the
alpha in the question you asked yesterday).
> - Edward
Haris Skiadas
Department of Mathematics and Computer Science
Hanover College
More information about the R-help
mailing list