[R] On-demand importing of a package

Jeff Newmiller jdnewmil at dcn.davis.ca.us
Wed Nov 23 00:38:28 CET 2011


If "Suggests" doesn't work for you, perhaps you need to put more effort into reinventing the wheel, and depend less on other packages.
---------------------------------------------------------------------------
Jeff Newmiller                        The     .....       .....  Go Live...
DCN:<jdnewmil at dcn.davis.ca.us>        Basics: ##.#.       ##.#.  Live Go...
                                      Live:   OO#.. Dead: OO#..  Playing
Research Engineer (Solar/Batteries            O.O#.       #.O#.  with
/Software/Embedded Controllers)               .OO#.       .OO#.  rocks...1k
--------------------------------------------------------------------------- 
Sent from my phone. Please excuse my brevity.

"Gábor Csárdi" <csardi at rmki.kfki.hu> wrote:

>On Tue, Nov 22, 2011 at 4:27 PM, Martin Morgan <mtmorgan at fhcrc.org>
>wrote:
>[...]
>> No need to Depend:. Use
>>
>> Imports: Matrix
>>
>> plus in the NAMESPACE file
>>
>>  importFrom(Matrix, rowSums)
>>
>> Why do you not want to do this? Matrix is available for everyone,
>Imports:
>> doesn't influence the package search path. There is a cost associated
>with
>> loading the library in the first place, but...?
>
>Not just loading, installing a package has a cost, too. Dependencies
>are bad, they might make my package fail, and I have no control over
>them. It's not just 'Matrix', I have this issue with other packages as
>well.
>
>Anyway, 'Imports: Matrix' is just a workaround I think. Or is the
>example in my initial mail expected to fail? Why is that? Why can I
>call some functions from 'Matrix' that way and why can't I call
>others?
>
>> I'm more into black-and-white -- it either needs Matrix or not;
>apparently
>> it does.
>
>It's a matter of opinion, I guess. I find it very annoying when I need
>to install a bunch of packages from which I don't use any code, just
>because some tiny bit of a package I need uses them. I would like to
>spare my users from this.
>
>[...]
>> In another message you mention
>>
>>> Matrix:::rowSums(W)
>> Error in callGeneric() :
>>  'callGeneric' must be called from a generic function or method
>>
>> but something else is going on -- you don't get to call methods
>directly;
>> you're getting Matrix::rowSums (it's exported, so no need for a :::,
>see
>> getNamespaceExports("Matrix")). Maybe traceback() after the error
>would be
>> insightful?
>
>Another poster suggested this, that's why I tried. It is clear that I
>should not call it directly. All I want to do is having a function
>like this:
>
>f <- function() {
> if (require(Matrix)) {
>   res <- sparseMatrix(dims=c(5, 5), i=1:5, j=1:5, x=1:5)
> } else {
>   res <- diag(1:5)
> }
> y <- rowSums(res)
> res / y
>}
>
>Setting the subjective bit, about depending or not, aside, is there
>really no solution for this? The code in the manual page examples work
>fine without importing the package and just loading it if needed and
>available. Why doesn't the code within the package?
>
>Thanks for the patience,
>Gabor
>
>> Martin
>>
>[...]
>
>-- 
>Gabor Csardi <csardi at rmki.kfki.hu>     MTA KFKI RMKI
>
>______________________________________________
>R-help at 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.



More information about the R-help mailing list