[R] Hiding a function

Duncan Murdoch murdoch at stats.uwo.ca
Sat Feb 23 12:09:01 CET 2008


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



More information about the R-help mailing list