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.