Skip to content
Prev 43306 / 63424 Next

R package dependency issues when namespace is not attached

I have always assumed that having a package in the 'Depends' field
would automatically also?import?the namespace. However, it seems that
in R 2.15, dependencies do not become available until the package is
actually?attached?to the searchpath. Is this intended behavior?

The problem appears as follows: Suppose there is a package 'Child'
which?Depends, but does not explicitly import?a package called
'Parent' and contains a function that calls out to an object in the
namespace of 'Parent'. When this function is called without attaching
'Child' to the search path, the function in 'Parent' cannot be found.

Here an example from the manual of the?bigdata?package, but the
problem is very widespread:

x = matrix(rnorm(50*80),50,80)
beta = c(3,2,1.5,rep(0,77))
y = rnorm(50) + x%*%beta
z1 = bigdata::lasso.stars(x,y)

The example fails because lasso.stars depends on 'glmnet' which is not
loaded until?bigdata?is attached. The only way to be able to call
lasso.stars?is to actually attach the?bigdata?package:

library(bigdata)
z1 = bigdata::lasso.stars(x,y)

Now to further complicate things, it seems that this problem is
inherited to any 'grandchild' package that?imports, in this case, the
lasso.stars function. I have a hard time finding a good example but I
am sure they are out there.

Is this a bug? I know that it can be avoided by asking package authors
to use Imports instead of Depends, but in practice the majority of the
packages on CRAN still use Depends. It seems like the problem is
easily fixed if R would automatically import the namespace of any
Depends packages into to the child package namespace?