Gibt es einen Weg Code in einem R-Paket kann herausfinden, welche Paket oder Namespace es gehört?Code in R-Paket: Finden Sie heraus, * welches * Paket/Namespace es ist
Hintergrund: Ich finde, dass ich einen gemeinsamen Code zwischen Paketen habe, der sich nur im Paketnamen unterscheidet. Ein gemeinsames Beispiel ist tests/testthat.R
:
library(testthat)
library(ShiftedExcitation)
test_check("ShiftedExcitation")
Wenn der Code, an dem Paket herausfinden könnte oder Namensraum gehört, konnte ich eine Reihe von Orten zu vermeiden, in denen der Name des Pakets wird nun gegeben.
Gerade jetzt definiere ich eine versteckte Variable, die den Paketnamen enthält, sagen
.PKG <- "ShiftedExcitation"
und verwenden Sie dann etwas entlang der Linien von *
library(testthat)
library(.PKG, character.only = TRUE)
test_check(.PKG)
aber ich Bin gespannt, ob es eine elegantere Lösung gibt.
* Ich funktionierte nicht so weit, wie testthat.R
außerhalb des Paketnamespace ausgewertet wird. Es funktioniert jedoch zum Definieren einer unittest
Funktion innerhalb des Paketcodes.
Sie können '.getNameSpace (match.call() [[1]])' verwenden, die packt der Name der Funktion als Argument möglicherweise hilfreich: http://stackoverflow.com/questions/15595478/how-to-get-the-name-of-the-calling-function-inside-the-called-routine –
'getNamespaceName (topenv())'? Z. B. debug (lm); lm(); getNamespaceName (topenv()) ' –
@MartinMorgan:' topenv' ist fast die Antwort - nur dass der 'testthat' Namespace vor dem pacakge im' search() 'Pfad liegen kann. – cbeleites