[R] Hiding a function
Duncan Murdoch
murdoch at stats.uwo.ca
Sat Feb 23 14:37:06 CET 2008
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 <murdoch at stats.uwo.ca> 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 at 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.
>>>
>>>
>>
>
>
More information about the R-help
mailing list