The easiest way, perhaps, is to assign the internal functions to frame 1: > mainfunc <- function(x){ + + est <- function(x,par){ + abs(sum(par*x)) + } + + func <- function(par,x){ + est(x,par) + } + + est.theta <- function(x){ + optimize(func,lower=-10, upper=20,x=x)$minimum + } + + assign("func", func, frame=1) + assign("est", est, frame=1) + est.theta(x) + + } > > x <- 1:10 > mainfunc(x) [1] 5.286101e-006
You should read about the scoping rule differences in, e.g., S Programming. Andy > From: Victor Gravenholt > > Sorry to bother you about a S-Plus related problem, but I > hope someone > can help. > I have tried to "translate" some code from R to S-Plus (I > have colleague > that insists on using S-Plus. And yes, I have tried to make > him change > to R...) > The following code works out fine in R, but in S-Plus (S-PLUS 6.2 for > Windows Professional Ed.) I get the error message "Problem in > est.theta(x): Object "func" not found ". > I have tried to keep most of the structure in my original > problem (but > simplified it!), so the code could seem a bit strange. > I suspect that this has something to do with different > scoping rules in > R and S-Plus, but still I have not found a workable solution > in S-Plus. > > mainfunc <- function(x){ > > est <- function(x,par){ > abs(sum(par*x)) > } > > func <- function(par,x){ > est(x,par) > } > > est.theta <- function(x){ > optimize(func,lower=-10, upper=20,x=x)$minimum > } > > est.theta(x) > > } > > x <- 1:10 > mainfunc(x) > > > > > Any help is greatly appreciated. > > Victor > > ______________________________________________ > R-help@stat.math.ethz.ch mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide! > http://www.R-project.org/posting-guide.html > > > ______________________________________________ R-help@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html