On 23/02/2008 8:22 AM, Christophe Genolini wrote: > Ok, I saw FUNx > So, I reformulate my question : is there a way, without nesting b( ) in > a( ), to make b( ) available only in a( ) ?
Not that I know of. It will be available to anything using the same environment as a(), which in the case of a package with a NAMESPACE includes all other functions in the package, and in the case of my example below, includes everything else defined in the same local() environment (e.g. d()). Duncan Murdoch >> Just to clarify, what Duncan was referring to as the >> alternative was nesting the definition of one function >> in another, e.g. look at FUNx in by.data.frame -- >> FUNx is available to by.data.frame but is not >> visible outside of by.data.frame . >> >> On Sat, Feb 23, 2008 at 6:09 AM, Duncan Murdoch <[EMAIL PROTECTED]> wrote: >> >>> On 23/02/2008 5:58 AM, Christophe Genolini wrote: >>> >>>> Duncan Murdoch a écrit : >>>> >>>>> 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 >>>>> >>>> If I understand, it is possible only in a package, not in a programme >>>> (unless the "other ways"), is that it ? >>>> >>> Yes, that's right. Here's one of the other ways: >>> >>> a <- local( { >>> b <- function(y){y^2} >>> d <- function(y){y^3} >>> function(x){ >>> b(x)+d(x)+2 >>> } >>> }) >>> >>> I don't find that more readable than if b and d had been defined locally >>> within a. >>> >>> 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. >>> >>> >> > > ______________________________________________ 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.