[R] Controlling visibility of top-level functions
Paul A. Steckler
steck at stecksoft.com
Fri Jan 31 23:28:57 CET 2014
Thanks for the suggestions.
I'm going to need to create an R package, eventually, so I'll use that
mechanism to control visibility.
-- Paul
On Fri, Jan 31, 2014 at 11:13 AM, Duncan Murdoch
<murdoch.duncan at gmail.com> wrote:
> On 31/01/2014 1:46 PM, Paul A. Steckler wrote:
>>
>> I'm fairly new to R, and have checked the R FAQ and done an RSiteSearch
>> for help
>> on this topic, to no avail.
>>
>> I want to write some R code that has functions at the top-level that
>> are not visible when
>> the code is loaded. So in
>>
>> fun1 <- function(...) { ... }
>>
>> fun2 <- function(...) { ... fun1 ...}
>>
>> I'd like fun2 to be callable, but have fun1 be invisible. That is, the
>> scope of fun1 is
>> limited to the file in which it's defined.
>>
>> In Python, I believe that prepending an underscore to a variable name
>> limits its scope in this way.
>> Is there a similar mechanism in R?
>
>
> There are a couple ways.
>
> The heavyweight way is to write a package that exports fun2 but not fun1.
> fun2 can see fun1, but the rest of the world can't.
> Scope isn't limited to one file, any function in the package can see it.
>
> The lightweight way is to define fun1 and fun2 in a local scope, e.g.
>
> fun3 <- local({
>
>
> fun1 <- function(...) { ... }
>
> fun2 <- function(...) { ... fun1 ...}
> fun2
> })
>
> This way fun1 and fun2 can see each other but nobody else can see them, and
> fun3 is a copy of fun2 that is visible in the workspace. You don't need a
> third name, I just changed it to make the explanation easier.
>
> Duncan Murodch
>
>
>
>
More information about the R-help
mailing list