R包中有沒有一種方法代碼可以找出其中它包含哪個包或名稱空間?R包中的代碼:找出它是哪個*包/名稱空間
背景:我發現我在軟件包名稱中有不同的軟件包之間的通用代碼。一個常見的例子是tests/testthat.R
:
library(testthat)
library(ShiftedExcitation)
test_check("ShiftedExcitation")
如果代碼可以找出哪個包或命名空間是屬於,我會避免一些地方的包名現在的指定位置。
現在我定義包含包名稱的隱變量,說
.PKG <- "ShiftedExcitation"
然後用東西沿着 *
library(testthat)
library(.PKG, character.only = TRUE)
test_check(.PKG)
,但我行我很好奇是否存在更優雅的解決方案。
*我沒有得到這個工作,因爲testthat.R
在軟件包命名空間外被評估。不過,它確實可以在包代碼中定義一個unittest
函數。
您可以使用'.getNameSpace(match.call()[[1]])'抓取該函數的名字作爲參數。可能有幫助:http://stackoverflow.com/questions/15595478/how-to-get-the-name-of-the-calling-function-inside-the-called-routine –
'getNamespaceName(topenv())'?例如,'debug(lm); LM(); getNamespaceName(topenv())' –
@MartinMorgan:'topenv'幾乎就是答案 - 只不過'testthat'命名空間可以在'search()'路徑中的pacakge之前。 – cbeleites