簡體   English   中英

未附加名稱空間時的R包依賴性問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM