22

おそらくかなり基本的な質問ですが、友人と私が実行しようとしたところstr(packge_name)、R からエラーが発生しました。今見てみると、R パッケージは、写真や歌などのオブジェクトのコレクションであるという点で .zip ファイルのようなものであり、写真や歌自体ではないのではないかと考えています。

画像ビューアーで画像の zip を開こうとすると、解凍するまで何をすべきかわかりません。呼び出しstr(forecast)ができないのと同じようにstr(ts)、予測パッケージをライブラリにロードすると呼び出すことができます。 ..

誰でも私を正すことができますか?

4

4 に答える 4

19

あなたの質問は次のとおりです。

R パッケージとはどのような種類のオブジェクトですか?

どういうわけか、この正確な質問に対する答えがまだありません。だからここに行きます:

R に関する限り、R パッケージはオブジェクトではありません。つまり、R の型システムのオブジェクトではありません。Rは書くことができるので少し難しいです

library(pkg_name)

pkg_name事前に定義する必要はありません。対照的に、R で使用している他のオブジェクトは、どこかで定義する必要があります。ユーザーによって、または明示的または暗黙的にロードされたパッケージによって定義されます。

これは残念なことであり、人々を混乱させます。したがって、あなたが見たときlibrary(pkg_name)、考えてください

library('pkg_name')

つまり、引用符で囲まれたパッケージ名を想像してください。実際、これは期待どおりに機能します。コードが引用符なしでも機能するという事実は、非標準評価libraryとして知られる関数の特殊性です。この場合、ほとんどが設計上の不運な決定です (ただし、理由はあります)。

繰り返しますが、パッケージは R オブジェクトの型ではありません1。R の場合、これは単に、ファイル システム内の既知の場所を参照する名前であり、想定したものと同様です。BondedDust の回答はその構造を説明するために詳細に説明されているため、ここでは繰り返しません。


1超技術的な詳細については、以下の Joshua と Richard のコメントを参照してください。

于 2015-01-13T16:49:41.137 に答える
5

R自身のドキュメントから:

パッケージは、必要に応じてオプションのコード、データ、およびドキュメントをロードするためのメカニズムを提供します。…パッケージは、R を拡張するファイルのディレクトリ、ソース パッケージ (パッケージのマスター ファイル)、またはソース パッケージのファイルを含む tarball です。またはインストールされたパッケージ、ソース パッケージで R CMD INSTALL を実行した結果。一部のプラットフォーム (特に OS X と Windows) には、ソースからインストールするのではなく、解凍できるインストール済みパッケージのファイルを含むバイナリ パッケージ、zip ファイルまたは tarball もあります。パッケージはライブラリではありません。

そうです、パッケージはその中の機能ではありません。パッケージを構成する関数やデータをRが使えるようにする仕組みです。したがって、最初にロードする必要があります。

于 2015-01-13T16:30:02.843 に答える
4

Hadley の著書Advanced-R (Chapter 6.3 - functions, p.79) を読んでいますが、この引用はあなたをカバーすると思います:

Every operation is a function call
“To understand computations in R, two slogans are helpful:

Everything that exists is an object.
Everything that happens is a function call."
— John Chambers

その使用によるとlibrary(name_of_library)、パッケージをロードする関数呼び出しです。ロードされたすべてのビット、つまり関数またはデータ セットはobjects、他の関数を呼び出すことで使用できます。その意味で、パッケージは、ロードされるまで、R のどの環境にも属しません。object次に、それが含まれていてロードされているのコレクションであると言えますobjects

于 2015-01-13T16:23:04.447 に答える