[英]R package dependency issues when namespace is not attached
我一直認為在'Depends'字段中有一個包會自動導入命名空間。 但是,似乎在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功能。 我很難找到一個很好的例子,但我相信他們在那里。
這是一個錯誤嗎? 我知道可以通過要求包作者使用Imports而不是Depends來避免它,但實際上CRAN上的大多數包仍然使用Depends。 如果R會自動將任何Depends包的命名空間導入子包命名空間,似乎很容易避免這個問題。
對於那些感興趣的人, 這里繼續討論r-devel郵件列表:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.