From mtmorgan at fhcrc.org  Mon Feb 25 23:36:29 2013
From: mtmorgan at fhcrc.org (Martin Morgan)
Date: Mon, 25 Feb 2013 14:36:29 -0800
Subject: [Rd] Recommended way to call/import functions from a Suggested
 package
In-Reply-To: <CABdHhvEwU9mgnnL1=iHur-JMFwOOPkkv8P164g=uVuaf8xWajQ@mail.gmail.com>
References: <FD2C7845-F6AD-4AA1-91C1-8CB14F43AA7D@stat.ubc.ca>
	<CABdHhvHkJkyzKODdDKKt+fmCeUAXJC7L24vXLuLPWmRYsYZtkQ@mail.gmail.com>
	<FDF2030A-2A91-4A40-B09F-C4DD78682A62@r-project.org>
	<CABdHhvHx1H09Qbx6mGBZUkB-yyta5nNv-cg=JgbS+0Js-iN7Yw@mail.gmail.com>
	<4F6FBC64-4EAE-43E2-B041-B54663CDF950@stat.ubc.ca>
	<CABdHhvEwU9mgnnL1=iHur-JMFwOOPkkv8P164g=uVuaf8xWajQ@mail.gmail.com>
Message-ID: <512BE76D.8090107@fhcrc.org>

On 02/25/2013 01:28 PM, Hadley Wickham wrote:
>> To summarize, it appears that the only way to call functions from a
>> suggested package is by using either 'require' (which will dynamically
>> attach it) or the double colon method. Is this something that should be
>> mentioned in R-exts?
>
> Except the double colon method doesn't work (i.e. does not pass R CMD
> check) unless you also import the package, which means it's no longer
> just a suggestion - it must always be installed.
>
> A simple test case (attached DESCRIPTION and R/test.r) yields this
> warning on R CMD check:
>
> * checking for unstated dependencies in R code ... WARNING
> '::' or ':::' import not declared from: 'MASS'
> See the information on DESCRIPTION files in the chapter 'Creating R
> packages' of the 'Writing R Extensions' manual.

haven't been following fully, but loadNamespace rather than require, with 
Suggests: MASS in DESCRIPTION ?

f = function() {
     ok <- tryCatch({
         loadNamespace("MASS")
         TRUE
     }, error=function(...) FALSE)

     if (ok) {
         MASS::huber(1:10)
         cat("OK\n")
     }
}

loadNamespaces loads but does not attach the package. Suggests: is enough to 
quieten the warning with

~/tmp$ R --version
R Under development (unstable) (2013-02-21 r62017) -- "Unsuffered Consequences"

This is consistent with RShowDoc("R-exts") section 1.1.1

   Namespaces accessed by the ?::? and ?:::? operators must be listed here, or 
in ?Suggests? or ?Enhances? (see below).

Martin

>
> Hadley
>
>
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>


-- 
Computational Biology / Fred Hutchinson Cancer Research Center
1100 Fairview Ave. N.
PO Box 19024 Seattle, WA 98109

Location: Arnold Building M1 B861
Phone: (206) 667-2793



[Rd] Recommended way to call/import functions from a Suggested package
Martin Morgan