[R] On-demand importing of a package

R. Michael Weylandt michael.weylandt at gmail.com
Tue Nov 22 21:20:00 CET 2011


How about calling Matrix's namespace directly?

Matrix:::rowSums()

Michael

On Tue, Nov 22, 2011 at 3:16 PM, Gábor Csárdi <csardi at rmki.kfki.hu> wrote:
> Dear All,
>
> in some functions of my package, I use the Matrix S4 class, as defined
> in the Matrix package.
>
> I don't want to depend on Matrix, however, because my package is
> perfectly fine without Matrix, most of the functionality does not need
> Matrix. Matrix is so included in the 'Suggests' line.
>
> I load Matrix via require(), from the functions that really need it.
> This mostly works fine, but I have an issue now that I cannot sort
> out.
>
> If I define a function like this in my package:
>
> f <- function() {
>  require(Matrix)
>  res <- sparseMatrix(dims=c(5, 5), i=1:5, j=1:5, x=1:5)
>  y <- rowSums(res)
>  res / y
> }
>
> then calling it from the R prompt I get
> Error in rowSums(res) : 'x' must be an array of at least two dimensions
>
> which basically means that the rowSums() in the base package is
> called, not the S4 generic in the Matrix package. Why is that?
> Is there any way to work around this problem, without depending on Matrix?
>
> I am doing this on R 2.14.0, x86_64-apple-darwin9.8.0.
>
> Thank You, Best Regards,
> Gabor
>
> --
> 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