2017-05-06 2 views

答えて

3

一般に、検索パスに名前空間を付けずにパッケージを使用することは常に可能です。読み込みではなく、読み込みは、同じ名前の関数同士が衝突する原因です。それは、::オペレータが指定された名前空間からエクスポートされた関数を呼び出すことを意味し

loadNamespace("pkg") 
pkg::pkgfunc(a, b, ...) 

行う代わりに

library(pkg) 
pkgfunc(a, b, ...) 

で、です。あなたは問題に遭遇するかもしれませんが、少数ですべきです。

他の言語のプログラマーの場合は、パッケージを使用するたびにlibrary()というRの通常の方法よりもよく慣れています。 (私はこの問題に対処するためにRがパッケージネームスペースを必須にしてから何年にもわたって、すべてのパッケージを地球環境にロードしてから何年も経ちました。代わりにbase関数の接頭辞としてbase::を付けることができます。これは、基本パッケージ内の関数への明示的な参照であるため、同じ名前の他の関数は無視されます。

base::sum(1:10) 
base::list(a=1, b=2, c=3) 
+0

このような包括的な回答をいただきありがとうございます。名前空間からのエクスポートではなく、パッケージを読み込んだ後に毎回接頭辞を使用するだけでは(なぜなら接頭辞を使用しなければならないように思われる)のはなぜですか? – Bonono

関連する問題