Kode sumber paket R pertama yang akan dipelajari untuk persiapan menulis paket sendiri


47

Saya berencana untuk mulai menulis paket R.

Saya pikir akan lebih baik untuk mempelajari kode sumber paket yang ada untuk mempelajari konvensi pembangunan paket.

Kriteria saya untuk paket yang baik untuk dipelajari:

  • Gagasan statistik / teknis yang sederhana : Intinya adalah mempelajari mekanisme pembuatan paket. Memahami paket seharusnya tidak membutuhkan pengetahuan khusus yang sangat spesifik tentang topik sebenarnya dari paket tersebut.
  • Gaya pengkodean sederhana dan konvensional : Saya mencari sesuatu yang sedikit lebih dari Hello Worldtetapi tidak jauh lebih banyak. Trik dan peretasan idiot akan mengganggu ketika pertama kali mempelajari paket R.
  • Gaya pengkodean yang baik : Kode ini ditulis dengan baik. Ini mengungkapkan baik pemahaman tentang pengkodean yang baik, secara umum, dan kesadaran akan konvensi pengkodean dalam R.

Pertanyaan:

  • Paket mana yang bagus untuk dipelajari?
  • Mengapa kode sumber paket yang disarankan baik untuk dipelajari relatif terhadap kriteria yang disebutkan di atas atau kriteria lain yang mungkin relevan?

Pembaruan (13/12/2010) Mengikuti komentar Dirk, saya ingin menjelaskan bahwa banyak paket akan baik untuk dipelajari terlebih dahulu. Saya juga setuju bahwa paket akan menyediakan model untuk hal-hal yang berbeda (mis. Sketsa, kelas S3, kelas S4, pengujian unit, Roxygen, dll.). Meskipun demikian, akan menarik untuk membaca saran konkret tentang paket yang baik untuk memulai dan alasan mengapa mereka akan menjadi paket yang baik untuk memulai.

Saya juga memperbarui pertanyaan di atas untuk merujuk ke "paket" daripada "paket".


2
Cara lain untuk melihat ini adalah untuk mencari paket tertentu penulis ; penulis tertentu sangat baik dalam mengikuti praktik terbaik dan menulis kode yang jelas, dalam hal ini Anda dapat mempelajari semua materi mereka.
Shane

1
@Shane Poin bagus. Adakah saran untuk pembuat paket mana yang baik untuk dipelajari ketika pertama kali belajar menulis paket?
Jeromy Anglim

Jawaban:


15

Saya sarankan melihat paket kebun binatang karena alasan berikut:

  1. Ini memiliki beberapa sketsa yang ditulis dengan baik;
  2. Menggunakan namespace menggunakan useDynLib, import, export, dan S3method;
  3. Ini memiliki beberapa tes unit menggunakan RUnit;
  4. Ini memberikan contoh yang baik tentang cara membuat / mendokumentasikan metode S3;
  5. Ini memiliki beberapa panggilan ke kode C melalui .Callantarmuka;
  6. Berisi demo (merencanakan);
  7. Ini bertujuan untuk konsisten dengan instalasi inti R (mis. Fungsi berperilaku sama, tidak menutupi / mengesampingkan fungsi dasar, dll.)

Itu tidak menggunakan roxygen, yang sangat berguna, tetapi 7 dari 8 tidak buruk. ;-)

Untuk menanggapi kriteria Anda:

  1. Konsepnya sederhana: zooadalah kelas mirip matriks yang dipesan oleh sesuatu . Tidak diperlukan pengetahuan khusus domain.
  2. zoo memang tampaknya memiliki beberapa konvensi pengkodean istimewa, tetapi tidak ada yang over-the-top yang mencegah pemahaman kode.
  3. zoo bertujuan untuk menjadi konsisten dengan R sebanyak mungkin.

1
Di mana orang dapat menemukan paket ini?
Adam SA

@ Adam: Saya menambahkan tautan ke kebun binatang dalam jawaban saya. Halaman itu juga memiliki tautan ke halaman proyek R-forge kebun binatang.
Joshua Ulrich

9

Saya tidak menganggap diri saya sebagai pengembang paket R yang mapan, tetapi baru-baru ini menjalani proses penulisan dan pemeliharaan paket untuk lingkungan kerja saya.

Saya sebelumnya telah menulis / memelihara / memperbarui satu set skrip yang akan saya sampaikan dari proyek ke proyek melalui source()fungsi. Hasil akhir dari ini adalah bahwa saya akan berakhir dengan skrip yang sebagian besar nongkrong di berbagai tempat di drive jaringan kami. Tidak pernah jelas di mana set skrip yang paling mutakhir berada. Sejak itu saya telah bermigrasi untuk menulis / memelihara paket menggunakan roxygen. Ini secara drastis menyederhanakan hidup saya dan membuatnya lebih mudah untuk berbagi pekerjaan saya dengan kolega.

Berdasarkan kriteria Anda di atas, saya merekomendasikan rekomendasi untuk meninjau paket yang telah ditulis Hadley. Secara khusus, saya pikir membaca wiki devtools akan sangat membantu. Kode Hadley didokumentasikan dengan baik dan beberapa paketnya menggunakan roxygen. Saya pikir menulis dan memelihara satu dokumen untuk fungsi R dan dokumentasi R jauh lebih mudah daripada memisahkannya di dua lokasi (file .R dan .RD).

Paket Hadley juga menyajikan beberapa konsep yang cukup mendasar dan relatif mudah untuk diuraikan (imho) jika Anda mencari petunjuk tentang ide-ide aspek teknis. Saya menemukan diri saya menggali melalui kode sumber plyr ketika saya sedang mencari pointer pada dokumentasi roxygen atau tugas mendasar lainnya.


Terima kasih. Wiki devtools, khususnya, memiliki banyak ide hebat.
Jeromy Anglim

@Jeromy - Setelah membaca posting terbaru Anda tentang penelitian yang dapat direproduksi dll (uber uber sangat membantu, terima kasih!) Berarti Anda akan menggunakan roxygen dengan sangat cepat. Saya seharusnya juga menyebutkan bahwa Eclipse mendukung sintaksis roxygen dan menjadikannya transisi yang cukup mudah. Tugas paling sulit yang telah saya atasi adalah menulis sketsa yang bermanfaat dan produktif. Saya membayangkan Anda mulai dari titik lompat jauh lebih tinggi daripada saya dalam hal itu.
Mengejar

2
Hanya saja, jangan membaca sumber ggplot2. Ini akan membuat otak Anda berdarah
hadley

sungguh pengembang R yang jujur!
Leo5188

7

Mengapa tidak mengambil pendekatan pengambilan sampel acak yang digerakkan secara empiris? Pilih saja beberapa dan lihat mana yang cocok untuk Anda.

Selain bercanda, lihat saja beberapa paket yang Anda gunakan sendiri dan sudah Anda kenal. Mengunduhnya mudah, atau jika Anda mau, Anda juga dapat melihatnya melalui antarmuka web di R-Forge, RForge, atau Github.

Kemungkinan besar Anda akan mendapatkan paket berbeda untuk berbagai ide. Beberapa mungkin membantu Anda dengan cara mereka mengintegrasikan, katakanlah, sketsa. Beberapa mungkin membantu dengan kode yang dikompilasi. Atau tes unit. Atau Roxygen. Ada sekitar 2.600 dari mereka, jadi mengapa terobsesi dengan satu yang terbaik?


Poin bagus. Saya berencana untuk mengeksplorasi diri saya sendiri. Dan tentu saja, eksplorasi adalah setengah kesenangan. Dan saya setuju paket berbeda mengajarkan hal yang berbeda. Saya setuju bahwa banyak paket akan menjadi titik awal yang baik. Saya akan memperbarui pertanyaan saya untuk mencerminkan gagasan bahwa beberapa paket akan memenuhi kriteria. Tetapi memiliki beberapa saran konkret mungkin menghemat waktu saya dan orang lain baru untuk paket R Saya juga berpikir bahwa pengembang paket R yang mapan berada dalam posisi yang lebih baik untuk mengomentari manfaat paket yang diberikan untuk tujuan pembelajaran.
Jeromy Anglim

2
karena Anda harus mulai dari suatu tempat :)
hans0l0

2

Saran lain mungkin untuk melihat paket milik Anda akan tergantung pada atau berinteraksi dengan, terutama jika ini menerapkan beberapa item yang disebutkan Joshua Ulrich atau telah ditulis oleh penulis terkenal. Mungkin bermanfaat untuk mempelajari bagaimana hal-hal dilakukan di bidang Anda, untuk memastikan kompatibilitas. Seringkali orang akan berpikir tentang masalah tertentu dan membaca solusi mereka akan sangat membantu.


1

Saya akan merekomendasikan paket pembentukan kembali hadley. Anda dapat menemukan sumbernya di https://github.com/hadley/reshape


2
Terima kasih. Mengapa Anda merekomendasikannya?
Jeromy Anglim

4
Saya tidak akan merekomendasikan membentuk kembali - bahkan saya tidak mengerti cara kerjanya. Pembentukan ulang jauh lebih baik dan mengikuti banyak prinsip pengembangan yang lebih baik.
Hadley
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.