Skip to content
Back to formatted view

Raw Message

Message-ID: <366c6f340912020731ka0297a7y89338395d33e13b4@mail.gmail.com>
Date: 2009-12-02T15:31:40Z
From: Peng Yu
Subject: How to export a function from a package and access it only by specifying the namespace?
In-Reply-To: <1259731621811-932798.post@n4.nabble.com>

On Tue, Dec 1, 2009 at 11:27 PM, Sharpie <chuck at 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