After some private email with some high level programmer (Gabor), I have the solution and I can answer to my own question :-)
The problem was 1° to define a function B( ) available only in a function A( ) (for code safeness) and 2° to define B( ) elsewhere than in A( ) (for code readability) The solution is the following # Definition of an environment that will be use in A() (a list will work as well) envA <- new.env() # Definition of B(), in environment envA : envA$b <- function(x) x2 # Definition of A : A <- function(x) with(envA, { B(3) }) Thanks Christophe > On 23/02/2008 5:15 AM, Christophe Genolini wrote: >> Hi the list >> >> Is it possible to 'hide' a function from the user ? I cut a big >> fonction in sub >> function and I would like to hide the sub function, just like if I >> declare them >> in the big function : >> >> -------------- >> a <- function(x){ >> b <- function(y){y^2} >> d <- function(y){y^3} >> b(x)+d(x)+2 >> } >> a(2) >> # [1] 14 >> b(2) >> # Error : >> ---------------- >> >> I would like the same, but with external declaration (for readability) : >> >> ---------------- >> b <- function(y){y^2} >> d <- function(y){y^3} >> a <- function(x){ >> b(x)+d(x)+2 >> } >> a(2) >> # [1] 14 >> b(2) >> # Error >> ---------------- >> >> Is it possible ? > > Yes, as long as you're using a package with a NAMESPACE, just don't > export b and d. There are other ways too, but they don't improve > readability. > > Duncan Murdoch > ______________________________________________ R-help@r-project.org mailing list 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.