On Feb 27, 2013, at 12:54 AM, Hervé Pagès wrote:

> On 02/26/2013 05:28 PM, Simon Urbanek wrote:
>> 
>> On Feb 26, 2013, at 6:48 PM, Hervé Pagès wrote:
>> 
>>> On 02/26/2013 03:12 PM, Simon Urbanek wrote:
>>>> 
>>>> On Feb 26, 2013, at 5:47 PM, Hervé Pagès wrote:
>>>> 
>>>>> Hi,
>>>>> 
>>>>> So MASS::huber(1:10) seems to do the job i.e. (1) loads the MASS
>>>>> package (if it's installed), (2) does not pollute the search path,
>>>>> (3) no 'R CMD check' warning if MASS is listed in Suggests,
>>>>> and (4) descent error message if MASS is not installed:
>>>>> 
>>>>>  > MASS::huber(1:10)
>>>>>  Error in loadNamespace(name) : there is no package called ‘MASS’
>>>>> 
>>>> 
>>>> But (4) is a problem - it may not fail without MASS since it is only 
>>>> suggested, that's why you need the try() ...
>>> 
>>> Not everybody needs the try(). Some functions in my package won't be
>>> able to return anything if the suggested package is not installed, so they 
>>> will have to fail, preferably loudly rather than silently. A pretty common 
>>> situation.
>>> 
>> 
>> Hmm.. according to the docs that is not quite as intended: a package must 
>> work without "suggests" dependencies in the entirety. You can 
>> (conditionally) use suggested packages in datasets, examples or vignettes. 
>> Obviously, you could be tempted to hide this deficiency (functions failing 
>> without suggested packages) by not calling the functions that fail in your 
>> examples or tests, but I'd argue that is bypassing the design of "suggests".
> 
> Here is what the "Writing R Extensions" manual says:
> 
>  The ‘Suggests’ field uses the same syntax as ‘Depends’ and lists
>  packages that are not necessarily needed. This includes packages
>  used only in examples, tests or vignettes (see Writing package
>  vignettes), and *packages loaded in the body of functions*.
> 
> Then some examples are provided and they mostly focus on suggested
> packages used in examples, tests or vignettes. I couldn't find
> anywhere that ``a package must work without "suggests" dependencies
> in the entirety''.
> 
> AFAIK there are many valid situations where one wants to provide
> some additional functionalities in his/her package via suggested
> packages. A typical example being a front-end function that supports
> different back-ends defined in different packages: the default
> back-end will generally be in Depends or Imports, the alternative
> back-ends in Suggests. If the user specifies a back-end (thru
> some argument passed to the front-end) that is not installed,
> then s/he'll get an error.
> 
> I don't need to hide this deficiency by not calling the functions
> that fail in my examples (or tests). I'll just call my front-end
> without specifying an alternative back-end.

*alternative*, yes.

Cheers,
Simon

> Not a big deal if my
> function generates a plot and if using the alternative back-end
> would basically produce the same plot with only some small cosmetic
> differences.
> 
> Cheers,
> H.
> 
>> 
>> 
>>> Believe it or not, the discussion was not just about the recommended
>>> way to call functions from the multicore package or another package
>>> providing some kind of support for parallelization, where not having
>>> it installed doesn't diminish the set of functionalities provided by
>>> my package, only makes it slower.
>>> 
>> 
>> I have no assumptions about what the author intended this functionality for, 
>> nor what you intend to use it for.
>> 
>> 
>>>> The whole thread (which you omitted) was started because the usual 
>>>> if(require(...)) { .. } has an unwanted side-effect which the requestor 
>>>> did not want so the question was what does the job and that got settled 
>>>> before you joined in ...
>>> 
>>> I didn't omit the thread: I actually read every answer including yours.
>>> Are you claiming your solution is the recommended one?
>> 
>> No - but as far as I can see it is in the spirit of the documentation which 
>> explicitly mentions if(require(..)) and further down talks about :: and 
>> Suggests - so putting 1 + 1 (conditionality and ::) has led me to devise 
>> what I suggested.
>> 
>> Cheers,
>> Simon
>> 
>> 
>>> Thanks for
>>> clarifying. Also as suggested by some posts in this thread, a
>>> clarification in the official documentation would be nice.
>>> 
>> 
>> 
>> 
>> 
>>> Thanks,
>>> H.
>>> 
>>>> 
>>>> Cheers,
>>>> S
>>>> 
>>>> 
>>>> 
>>>> 
>>>>> So is this recommendable or are there good reasons for stating in
>>>>> the manual that "this approach is usually not recommended"? (In which
>>>>> case it would be good to know what the recommended way is.)
>>>>> 
>>>>> Thanks,
>>>>> H.
>>>>> 
>>>>> 
>>>>> On 02/25/2013 02:56 PM, Hadley Wickham wrote:
>>>>>>> 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).
>>>>>> 
>>>>>> I guess that's changed since I last tried it.  (My reproducible
>>>>>> example forgot to include MASS in the Suggests :/ )
>>>>>> 
>>>>>> Thanks!
>>>>>> 
>>>>>> Hadley
>>>>>> 
>>>>> 
>>>>> --
>>>>> Hervé Pagès
>>>>> 
>>>>> Program in Computational Biology
>>>>> Division of Public Health Sciences
>>>>> Fred Hutchinson Cancer Research Center
>>>>> 1100 Fairview Ave. N, M1-B514
>>>>> P.O. Box 19024
>>>>> Seattle, WA 98109-1024
>>>>> 
>>>>> E-mail: hpa...@fhcrc.org
>>>>> Phone:  (206) 667-5791
>>>>> Fax:    (206) 667-1319
>>>>> 
>>>>> 
>>>> 
>>> 
>>> --
>>> Hervé Pagès
>>> 
>>> Program in Computational Biology
>>> Division of Public Health Sciences
>>> Fred Hutchinson Cancer Research Center
>>> 1100 Fairview Ave. N, M1-B514
>>> P.O. Box 19024
>>> Seattle, WA 98109-1024
>>> 
>>> E-mail: hpa...@fhcrc.org
>>> Phone:  (206) 667-5791
>>> Fax:    (206) 667-1319
>>> 
>>> 
>> 
> 
> -- 
> Hervé Pagès
> 
> Program in Computational Biology
> Division of Public Health Sciences
> Fred Hutchinson Cancer Research Center
> 1100 Fairview Ave. N, M1-B514
> P.O. Box 19024
> Seattle, WA 98109-1024
> 
> E-mail: hpa...@fhcrc.org
> Phone:  (206) 667-5791
> Fax:    (206) 667-1319
> 
> 

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

Reply via email to