On Tue, Dec 1, 2009 at 11:27 PM, Sharpie <ch...@sharpsteen.net> wrote:
>
>
> Peng Yu wrote:
>>
>> Then I try the package 'try.package' in an R session. I'm wondering
>> why neither 'my_test_f' and 'try.package::my_test_f' work.
>>
>
> The error message you got below clearly explains this-- you did not export
> my_test_f in your NAMESPACE file.  To access unexported functions, you must
> use the ':::' operator:
>
>  try.package:::my_test_f()
>
>
>
> Peng Yu wrote:
>>
>> Why 'my_test_g' can be accessed with 'try.package::' and without
>> 'try.package::'?
>>
>
> Because you exported it in the NAMESPACE file.
>
>
>
> Peng Yu wrote:
>>
>> Is there a way to make  'my_test_g' accessible only by specifying the
>> namespace 'try.package::'?
>>
>
> No.
>
> The purpose of the '::' operator is for those cases where multiple packages
> are loaded that each export a function with the same name.  This is known as
> "masking" and the last loaded package will contribute the dominant
> function-- i.e. the function the gets called when the user types
> "functionName()" and not "packageName::functionName()".  The "::" operator
> allows the selection of functions that are masked by the dominant function.
>
> If you really want to conceal a function from user-level code, don't export
> it and it will only be accessible via the ":::" operator.

Is there a way to list all the functions in a namespace? I tried the
following one, but it is not working.

> showMethods(where=getNamespace('try.package'))
No applicable functions

______________________________________________
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.

Reply via email to