最初のRパッケージはソースコードをパッケージ化して、独自のパッケージを作成する準備をします


47

Rパッケージの作成を開始する予定です。

パッケージ構築の慣習を学ぶために、既存のパッケージのソースコードを調べるのは良いことだと思いました。

勉強する良いパッケージの私の基準:

  • 単純な統計的/技術的アイデア:ポイントは、パッケージ構築の仕組みについて学ぶことです。パッケージを理解するために、パッケージの実際のトピックに関するドメイン固有の詳細な詳細な知識は必要ありません。
  • シンプルで従来型のコーディングスタイル:探しているのはそれ以上ではありHello Worldませんが、それ以上ではありません。特異なトリックとハックは、最初にRパッケージを学習するときに気が散ることになります。
  • 良いコーディングスタイル:コードはよく書かれています。一般的に、適切なコーディングの一般的な理解と、Rでのコーディングの規則の認識の両方を明らかにします。

質問:

  • どのパッケージが勉強に適していますか?
  • 提案されたパッケージソースコードは、上記の基準または関連する可能性のある他の基準と比較して検討するのに適しているのはなぜですか?

更新(2010年12月13日) Dirkのコメントに続いて、多くのパッケージが最初に勉強するのが良いことは間違いないことを明確にしたかった。また、パッケージがさまざまなもの(ビネット、S3クラス、S4クラス、ユニットテスト、Roxygenなど)のモデルを提供することに同意します。それにも関わらず、良いパッケージから始める具体的な提案と、それらが良いパッケージになる理由を読むのは面白いでしょう。

また、上記の質問を更新して、「パッケージ」ではなく「パッケージ」を参照するようにしました。


2
これを見る別の方法は、特定のパッケージ作成者を探すことです。一部の著者は、ベストプラクティスを順守し、明確なコードを作成するのが得意です。この場合、すべての資料を学習できます。
シェーン

1
@シェーン良い点。パッケージの作成を最初に学習するときに、どのパッケージ作成者が勉強するのが良いかについての提案はありますか?
ジェロミーアングリム

回答:


15

次の理由から動物園パッケージをご覧になることをお勧めします。

  1. よく書かれたビネットがいくつかあります。
  2. これは、使用して名前空間を使用してuseDynLibimportexport、とS3method
  3. RUnit; を使用したいくつかの単体テストがあります。
  4. S3メソッドを作成/文書化する方法の良い例を提供します。
  5. .Callインターフェイスを介したCコードの呼び出しがいくつかあります。
  6. (プロット)デモが含まれています。
  7. コアRインストールとの整合性を目指しています(たとえば、関数は同様に動作し、基本関数をマスク/オーバーライドしません)。

roxygenは使用しません。これは非常に便利ですが、8分の7は悪くありません。;-)

基準に対応するには:

  1. 概念は単純です何かzooによって順序付けられたマトリックスのようなクラスです。ドメイン固有の知識は必要ありません。
  2. zoo いくつかの特異なコーディング規約がありますが、コードの理解を妨げる過剰なものはありません。
  3. zoo Rと可能な限り一致することを目指しています。

1
このパッケージはどこにありますか?
アダムSA

@Adam:私の答えに動物園へのリンクを追加しました。このページには、動物園のR-forgeプロジェクトページへのリンクもあります。
ジョシュア

9

私は自分自身を確立されたRパッケージ開発者とは考えていませんが、最近、作業環境用のパッケージを作成および保守するプロセスを経験しています。

私は以前、source()関数を介してプロジェクトからプロジェクトに渡す一連のスクリプトを記述/保守/更新していました。この結果、ネットワークドライブのさまざまな場所で、ほとんど冗長なスクリプトがぶらぶらすることになりました。最新のスクリプトセットがどこにあるかは明確ではありませんでした。それ以来、roxygenを利用したパッケージの作成/保守に移行しました。私の人生が劇的に簡素化され、仕事を同僚と共有しやすくなりました。

上記の基準に基づいて、Hadleyが作成したパッケージを確認することをお勧めします。特に、devtools wikiを読むことは非常に役立つと思います。Hadleyのコードは十分に文書化されており、彼のパッケージのいくつかはroxygenを利用しています。Rの機能とRのドキュメントの両方について1つのドキュメントを作成および保守する方が、2つの場所(.Rおよび.RDファイル)に分割するよりもはるかに簡単だと思います。

Hadleyのパッケージは、かなり基本的な概念も提供しており、技術的な側面のアイデアに関するポインターを探している場合、比較的簡単に解析(imho)できます。roxygenのドキュメントやその他の基本的なタスクへのポインターを探しているときに、plyrのソースコードを掘り下げていることに気付きます。


ありがとう。特に、devtools wikiには素晴らしいアイデアがたくさんあります。
ジェロミーアングリム

@Jeromy-再現性のある研究などに関する最近の投稿を読んだことは、非常に迅速にroxygenにアクセスできることを意味します。また、Eclipseはroxygen構文をサポートしているため、非常に簡単に移行できることにも言及しました。私が克服してきた最も難しいタスクは、有用で生産的なビネットを書くことです。私はあなたがその点ではるかに高いジャンプオフポイントから始めていると思います。
チェイス

2
ggplot2のソースを読まないでください。それはあなたの脳を出血させます
ハドリー

正直なR開発者!
Leo5188

7

経験に基づいたランダムサンプリングアプローチを採用しませんか?いくつか選んで、あなたに合った作品をご覧ください。

冗談はさておき、あなた自身が使用し、よく知っているいくつかのパッケージを見てください。それらのダウンロードは簡単です。または、必要に応じて、R-Forge、RForge、またはGithubのWebインターフェイスから表示することもできます。

ほとんどの場合、アイデアごとに異なるパッケージが作成されます。たとえば、ビネットを統合する方法であなたを助けるかもしれません。いくつかはコンパイルされたコードに役立つかもしれません。または単体テスト。または酸素。それらの約2600があるので、なぜ単一のベストに取りつかれていますか?


素晴らしい点。私は自分自身を探検することを計画していた。そしてもちろん、探索は半分の楽しみです。また、パッケージごとに異なることを教えることに同意します。多くのパッケージが良い出発点になることに同意します。複数のパッケージが基準を満たすという考えを反映するように質問を更新します。しかし、いくつかの具体的な提案があると、自分自身と他の人がRパッケージを初めて使用するときに時間が節約できます。また、Rパッケージの確立された開発者は、学習の目的で特定のパッケージのメリットについてコメントするのに適した立場にあると思います。
ジェロミーアングリム

2
どこかから始める必要があるからです:)
hans0l0

2

別のアドバイスとして、特にJoshua Ulrichが著名な著者によって言及または作成されたいくつかの項目を 実装している場合、あなたのパッケージが依存または相互作用するパッケージを調べることをお勧めします。何らかの互換性を確保するために、フィールドで物事がどのように行われるかを学ぶことが役立つ場合があります。多くの場合、人々は特定の問題について考え、ソリューションの移行を読むことが役立つでしょう。


1

hadleyのreshapeパッケージをお勧めします。あなたはhttps://github.com/hadley/reshapeでソースを見つけることができます


2
ありがとう。なぜそれをお勧めしますか?
ジェロミーアングリム

4
形状を変更することはお勧めしません-それがどのように機能するか理解していません。Reshape2ははるかに優れており、多くの優れた開発原則に従っています。
ハドリー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.