R, если пространство имен не присоединено

Я всегда предполагал, что наличие пакета в поле "Зависимости" автоматически также импортирует пространство имен. Однако, похоже, что в R 2.15 зависимости не становятся доступными до тех пор, пока пакет не будет привязан к пути поиска. Это предполагаемое поведение?

Проблема возникает следующим образом: предположим, что есть пакет "Child", который зависит, но явно не импортирует пакет под названием "Parent" и содержит функцию, вызывающую объект в пространстве имен "Parent" . Затем, когда эта функция вызывается без фактического прикрепления "Child", функция в "Parent" не может быть найдена.

Вот пример из руководства пакета bigdata, но проблема очень распространена:

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)

Пример невозможен, поскольку lasso.stars зависит от "glmnet", который не загружается до тех пор, пока bigdata не будет прикреплен. Единственный способ вызвать lasso.stars - это фактически прикрепить пакет bigdata:

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

Теперь, чтобы еще больше усложнить ситуацию, кажется, что эта проблема унаследована к любому пакету "внук", который импортирует в этом случае функцию lasso.stars. Мне трудно найти хороший пример, но я уверен, что они там.

Это ошибка? Я знаю, что этого можно избежать, попросив авторов пакетов использовать Импорт вместо Depends, но на практике большинство пакетов на CRAN по-прежнему используют Depends. Похоже, что проблему легко избежать, если R автоматически импортирует пространство имен любых пакетов Depends в пространство имен дочерних пакетов.

Ответ 1

Для тех, кто заинтересован, обсуждение продолжается здесь в списке рассылки r-devel: