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.



Peng Yu wrote:
> 
>> library(try.package)
>> try.package::my_test_g
> function ()
> {
>     print("Helloggg")
> }
> <environment: namespace:try.package>
>> my_test_g
> function ()
> {
>     print("Helloggg")
> }
> <environment: namespace:try.package>
>> my_test_f
> Error: object "my_test_f" not found
>> try.package::my_test_f
> Error: 'my_test_f' is not an exported object from 'namespace:try.package'
> 
-- 
View this message in context: 
http://n4.nabble.com/How-to-export-a-function-from-a-package-and-access-it-only-by-specifying-the-namespace-tp932776p932798.html
Sent from the R help mailing list archive at Nabble.com.

______________________________________________
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