[R] Hiding a function
Christophe Genolini
cgenolin at u-paris10.fr
Sat Feb 23 16:58:00 CET 2008
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
>
More information about the R-help
mailing list