[R] function design

Michaell Taylor pols1oh at bestweb.net
Tue Mar 19 01:29:54 CET 2002


> 
>   Why not tell us what you actually want to do?
>   There are probably much simpler, more direct ways of doing it, but
>   given the information above who could tell?
>   For example, I don't think I have needed to use <<- to overcome any
>   programming problem that did not involve environments.


You are right.  Frequently the simplifications don't actually target the
problem.  The overall issue is that the data.frame data is a collection
of monte carlo simulations.  the ML data is a most likely estimate of
the same series. I want to adjust the Monte carlo simulations so that
the most likely fit in the "fat part" of the montecarlo distribution. I
do this by assessing the year by year fit and make the adjustments -
importantly, the adjustments are saved to "adjustments" for auditing
purposes.

lagger _ function(X,y,z,l=1) {temp _
c(rep(NA,l),X[-((length(X)-(l-1)):length(X))])
	temp[y==min(y)] _ z 
	return(temp)}
# X,y,z,l = variable, marker for first obs of scenario (yr), z=prior
level value
growit _ function(x,y,z) {(x/lagger(x,y,z)) }

inrange _ function(v,Y,s,z,mlv,met){
	lower _ mean(v[data$yr==Y])-(var(v[data$yr==Y])^.5)
	upper _ mean(v[data$yr==Y])+(var(v[data$yr==Y])^.5)
	MLE _ mlv[ML$yr==Y & ML$metcode==met]
	diffa _ 0
	if (MLE<lower) {print('lower')
		diffa <- lower-MLE
		v[data$yr==Y] <<- v[data$yr==Y]-diffa} THE PROBLEM AREA
	if (MLE>upper) {print('higher')
		diffa <- MLE-upper
		v[data$yr==Y] <<- v[data$yr==Y]+diffa} THE PROBLEM AREA
	if (diffa!=0) {
		v _ growit(v,s,z)
		adjustment$met _ append(adjustment$met,met)
		adjustment$sector _ append(adjustment$sector,sector)
		adjustment$ML _ append(adjustment$ML,MLE)
		adjustment$lower _ append(adjustment$lower,lower)
		adjustment$upper _ append(adjustment$upper,upper)
		adjustment$Var _ append(adjustment$Var,quote(v))
		adjustment$diffa _ append(adjustment$diffa,diffa)
		}		
	}
inrange(data$Linv,Y,data$yr,starting.inv,ML$inv,met)

THE PROBLEM AREA - marks the location where I would like to save the
changes out to the main data stream.

Hope this helps.

Thanks.


> 
>   deparse(substitute(x)), will however, get you the name of the
>   variable that was supplied as x.
>   
>   the following, is a vectorized version of something similar
> 
>   
>   foo <-function(x,y) ifelse(x>y,x,y)
>   a <- foo(a,b)
>  
> > 
> > Michaell
> > 
> > 
> > -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
> > r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
> > Send "info", "help", or "[un]subscribe"
> > (in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch
> > _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
> 
> -- 
> +---------------------------------------------------------------------------+
> | Robert Gentleman                 phone : (617) 632-5250                   |
> | Associate Professor              fax:   (617)  632-2444                   |
> | Department of Biostatistics      office: M1B28
> | Harvard School of Public Health  email: rgentlem at jimmy.dfci.harvard.edu   |
> +---------------------------------------------------------------------------+


-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._



More information about the R-help mailing list