In line

On 03/10/2015 23:56, Steven Yen wrote:
Thanks Bill. Simplified content of max.calls.R (with repeated calls to
maxLik removed) are shown below in the message. No, fn does not exist in
the environment.

Which explains why R cannot find it.

 I call a routine (say probit.R compiled into a library) to
use maxLik. Inside this routine,
1. In probit.R. likelihood function is defined yet in another nested
routine;

If I understand you correctly it is that function which you need to pass to max.calls. So alter max.calls as below

2. Function "max.calls" is also nested in that  probit.R;
Then, a call to max.calls works.

What I am trying to accomplish is, instead of inserting the identical
function (or set of lines) in every routine like probit.R, I like to either
compile max.calls.R or source it from inside probit.R. Thanks.


On Sat, Oct 3, 2015 at 4:47 AM, Steven Yen <sye...@gmail.com> wrote:

Hi
I collect a list of calls to a package in a function (routine) so that I
do not need to repeat the same sets of codes from program to program. In
the following, inserting the function into each program works. Then, I
place the function elsewhere in a PC folder, and include in with a 'source'
command. This does not work; it complains about a function (fn below) not
defined.
Compiling the function into a library file does not work either (with all
sorts of error messages saying this and that not defined).
Steven Yen

fn <- function(beta){
   f<-... (define f in this routine)
return(f)
}

max.calls<-function(method){

max.calls <- function(method, fn = NULL) {
   if(is.null(fn)) warning("You forgot to supply fn)
# *******************************************************
# Call maxLike with alternative algorithms
# *******************************************************
   many<-c("NR","BFGS","BFGSR","BHHH","SANN","CG","NM")
   if (method %in% many){
     ML<-maxLik(logLik=fn,grad=NULL,hess=NULL,start,
                method,print.level,constraints=NULL, ...)}
return(ML)
}
# This works:
ML<-max.calls(method)

Now in probit.R replace the call to max.calls(method) with
max.calls(method, whatever_function_you defined_in_probit.R_for_the_likelihood)

Of course I may have completely misunderstood what you are driving at.


# Does not work:
source("z:\\R\\yenlib\\lib\\max.calls.R")
ML<-max.calls(method)

Error: object 'fn' not found



        [[alternative HTML version deleted]]

______________________________________________
R-help@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.


--
Michael
http://www.dewey.myzen.co.uk/home.html

______________________________________________
R-help@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.

Reply via email to