SearchPathの名前衝突のためにRの関数をマスク解除する方法
-
15-09-2020 - |
質問
debug
オブジェクトを使用してスクリプトをデバッグするようにパッケージzoo
をロードしたとき、index
からの関数zoo
はdebug
パッケージによってマスクされました。index
をマスク解除するにはどうすればよいですか。一般的に、これらの名前を衝突する問題に対処する方法は?`動物園 'でdebug
パッケージを使用しないでください。
解決
エクスポートされたシンボルは、常に::
演算子で識別可能です。
zoo::index
.
ネームスペースで宣言されていない隠し関数は、:::
(トリプルコロン)を使用して依然としてアクセスすることができ、例は
zoo:::.onLoad
.
エクスポートされていなくても見ることができます。
他のヒント
マスクされた機能を持つパッケージをアンロードしてからリロードすることができます。SearchPathの優先順位を取り戻すには:
unloadNamespace("zoo")
library("zoo")
.
将来、その他の機能のマスキングを防止しながらパッケージをロードしたい場合は、検索パス内の任意の大きな数値を指定できます。
library("debug", pos = .Machine$integer.max)
. それはあなたに隠されていますが、動物園関数がインデックスを使用しようとすると、それはまだ独自のインデックスを見つけようとします。
動物園にはtime.zooメソッドがありますので、ZooオブジェクトがZooオブジェクトである場合は、インデックス(z)の代わりに時間(z)を使用できます。
最後にZoo :: Indexを参照して動物園で1つを取得することを確認できます。
所属していません StackOverflow