Skip to content
Prev 278193 / 398503 Next

On-demand importing of a package

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