I think you will find that using namespaces and export directives are a better way of controlling visibility with packages. That is their intended purpose.
Cheers, Bert Bert Gunter Genentech Nonclinical Biostatistics (650) 467-7374 "Data is not information. Information is not knowledge. And knowledge is certainly not wisdom." H. Gilbert Welch On Fri, Jan 31, 2014 at 2:28 PM, Paul A. Steckler <st...@stecksoft.com> wrote: > 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.dun...@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 >> >> >> >> > > ______________________________________________ > 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.