Re: [Rd] change function's formals default values

From: Andrew Finley <afinley_at_stat.umn.edu>
Date: Tue 04 Apr 2006 - 17:05:10 GMT

Your example is perfectly clear. I'll take your suggestion. Thanks a lot for your time-

On Tue, 2006-04-04 at 10:00 -0700, Thomas Lumley wrote:
> On Tue, 4 Apr 2006, Andrew Finley wrote:
>
> > Hi Thomas,
> >
> > Thanks for the note. I'm not sure about a lot of things. Setting the
> > formal defaults then calling the function seem straight forward. I just
> > assumed it would be like setting list values, or the C equivalent of
> > calling formals(fn)<-list(a=1, b=3).
> >
> > Following your suggestion, I can get the names of the parameters used in
> > this user defined function, but am not sure how to do what you are
> > suggesting. For instance, how do I call the function after I use setVar.
> > Could you point me to an example?
> >
>
> ##In R
> f<-function(a,b){
> function(x){ a+b*x}
> }
>
> f23<-f(a=2,b=3)
>
> dyn.load("cfun.so")
> .Call("cfun",fun=f23,rho=environment(f23),x=c(1,2,3,4),newa=1,newb=2)
>
> ## in cfun.c
>
> #include "Rinternals.h"
>
> SEXP cfun(SEXP fun, SEXP rho, SEXP x, SEXP newa, SEXP newb){
> SEXP ans, funcall;
>
> setVar(install("a"), newa, rho);
> setVar(install("b"), newb, rho);
>
> PROTECT(funcall=lang2(fun,x));
> ans=eval(funcall,rho);
>
> UNPROTECT(1);
> return ans;
>
> }
>
> ##
>
> This isn't necessarily any simpler, but it seems more natural to modify
> variables than default arguments, and also it is probably safer since you
> don't have to worry about the value of NAMED() and whether to copy the
> arguments.
>
> This is based on the more complicated code in cox_Rcallback.c in the
> survival package, for penalized Cox regression
> https://svn.r-project.org/R-packages/trunk/survival/src/cox_Rcallback.c
>
> -thomas
>
> Thomas Lumley Assoc. Professor, Biostatistics
> tlumley@u.washington.edu University of Washington, Seattle

-- 
Research Fellow
Department of Forest Resources
University of Minnesota
Office: 305 Green Hall
Phone: (612) 624-1714
Fax: (612) 625-5212
web: http://blue.fr.umn.edu

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
Received on Wed Apr 05 03:32:30 2006

This archive was generated by hypermail 2.1.8 : Tue 04 Apr 2006 - 18:16:47 GMT