37

Rでは、パッケージが「名前空間を介してロードされる(アタッチされない)」とはどういう意味sessionInfo()ですか?

編集

例えば:

> sessionInfo()

R version 2.15.2 (2012-10-26)
Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit)

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

---->>>> loaded via a namespace (and not attached):
---->>>> [1] tools_2.15.2
4

2 に答える 2

20

これは、パッケージ(この場合はR)がパッケージの関数/オブジェクトにアクセスできることを意味しますが、統計やグラフィックなどがロードされてユーザーが使用できるようになっているツールパッケージを明示的にロードしないと、ユーザーはアクセスできません。

次に例を示します。

sessionInfo()
file_ext("file.com")
tools::file_ext("file.com")
sessionInfo()
于 2013-02-20T20:06:13.813 に答える
18

評価するlibrary(foo)と、Rは最初にパッケージfooをメモリにロードし、次にパッケージをsearch()パスにアタッチします。loadNamespace("foo")またはなどの他の操作、foo::funまたはサードパーティがfooからシンボルをインポートすることを示した場合は、パッケージをロードしますが、検索パスには添付しません。Rは動的言語であるため、各関数呼び出しでは、使用可能なシンボルをトラバースして、一致する最初のシンボルを見つけます。アタッチ操作とロード操作を分離し、検索するシンボルの数を制限することで、効率的で、不要な名前の競合を回避します。

上記の例では、ツールパッケージが読み込まれていますが、(まだ)添付されていません。Rコマンドプロンプトでシンボルを入力すると、Rは最初にグローバル名前空間でシンボルを検索します(最初の要素が返されsearch()、見つからない場合は、の連続する要素で検索されsearch()ます。ツールがアタッチされていないため、ツールのシンボルは次のようになります。解決されていません。

> file_ext
Error: object 'file_ext' not found

それでも、tools::file_extツールが検索パス上にあるかどうかに関係なく、を使用してそれらにアクセスできます。

于 2013-02-20T22:04:15.507 に答える