Cara menulis paket R.

Saat melihat "Paket R", Anda mungkin berpikir "Sesuatu untuk dibagikan dengan orang lain". Tetapi paket R juga bisa menjadi cara yang baik untuk mengatur pekerjaan Anda sendiri hanya untuk diri Anda sendiri . Dan terutama diri Anda di masa depan.

Paket R memberi Anda struktur yang konsisten, jadi Anda lebih cenderung memfaktorkan ulang kode menjadi fungsi. Dan, setidaknya sama pentingnya: Paket memberi Anda cara yang konsisten untuk mendokumentasikan setiap fungsi Anda. Jadi, tahun depan, ada kemungkinan lebih baik Anda akan mengingat bagian mana dari kode Anda yang melakukan apa.

Pengaturan sistem

Pertama, Anda ingin menyiapkan sistem Anda. Untuk pengembangan paket yang mudah, saya sarankan untuk memastikan Anda telah menginstal pustaka berikut di sistem Anda: devtools, usethis, roxygen2, testthat, knitr, dan rmarkdown.

Anda mungkin membutuhkan lebih banyak pengaturan sistem juga. Di Windows, instal perangkat lunak yang disebut Rtools. Itu sebenarnya adalah aplikasi perangkat lunak, bukan paket R. Di Mac, sebaiknya dapatkan Xcode dari App Store.

Jika Anda tidak yakin apakah sistem Anda siap untuk menulis paket, devtools memiliki fungsi yang disebut has_devel()yang memeriksa apakah lingkungan pengembangan paket Anda baik-baik saja. Saya sarankan untuk menjalankannya setelah Anda menginstal devtools.

Sharon Machlis /

Selanjutnya, Anda dapat membuat paket baru di RStudio dengan membuka File> Proyek Baru> Direktori Baru dan memilih Paket R.

Anda dimintai nama paket dan apakah Anda ingin membuat repositori Git (yang biasanya saya lakukan) dan menggunakan packrat (yang biasanya tidak saya lakukan).

Di panel kanan bawah setelah membuat paket, perhatikan bahwa beberapa file dan dua direktori telah dibuat. 

Subdirektori R adalah tempat semua skrip R saya perlu hidup. Folder man untuk dokumentasi — khususnya, file bantuan fungsi . RStudio juga membuat hello.Rfungsi sampel R.

Ada juga beberapa file penting di direktori utama. Menjelaskan NAMESPACEbisa menjadi artikel itu sendiri, tetapi pemula dapat mengandalkan devtools dan menggunakan paket ini untuk mengatasinya.

DESCRIPTIONmemiliki beberapa metadata penting yang diperlukan tentang paket tersebut, jadi Anda perlu mengisinya. Ini sebagian besar hal-hal mudah seperti nama paket, penulis, deskripsi, dan lisensi. Itu juga tempat dependensi paket pergi.

Menggunakan paket ini dapat menangani format ketergantungan paket yang tepat untuk Anda. Misalnya, jika Anda membutuhkan paket lubridate untuk paket Anda, Anda dapat memuat menggunakan ini dengan library(usethis)dan kemudian menjalankan use_package("lubridate")untuk menambahkan dependensi. Anda dapat melihat bagaimana ini secara otomatis menambahkan teks yang diperlukan ke DESCRIPTIONfile dalam video yang disematkan di bagian atas artikel ini (atau dengan menjalankan kode serupa di sistem Anda sendiri).

Tulis dan dokumentasikan fungsi Anda

Selanjutnya, tulis fungsi apa pun seperti biasa, dan simpan sebagai skrip R di direktori R. Anda dapat memberi nama file apa pun yang Anda inginkan, dan Anda dapat menyertakan satu atau beberapa fungsi di file tersebut.

Roxygen menawarkan cara mudah untuk menambahkan dokumentasi ke suatu fungsi. Letakkan kursor Anda di mana saja dalam definisi fungsi dan pilih opsi menu RStudio Kode> Sisipkan Kerangka Roxygen.

Itu memberi Anda beberapa perancah untuk mendokumentasikan fungsi dengan cara yang dipahami R, seperti 

# 'Judul

# '

# '@ ​​hari param

# '

# '@kembali

# '@ ​​ekspor

# '

# '@contoh

Bidang Judul cukup jelas, dan Anda juga dapat menambahkan baris untuk deskripsi singkat. Ada @parambaris untuk setiap argumen fungsi (dalam contoh ini, fungsi memiliki satu argumen yang dipanggil day) @return,, dan @examples. @paramadalah tempat Anda mendokumentasikan tipe data apa yang seharusnya menjadi argumen dan dapat memberikan sedikit deskripsi. @returnmemberitahu jenis objek apa yang dikembalikan. @examplestidak diperlukan, tetapi Anda perlu memberikan contoh atau menghapus default itu @examples.

Untuk mengubah perancah ini menjadi file bantuan paket R, jalankan devtools::document()fungsinya.

Sekarang jika Anda melihat di direktori man, Anda harus memiliki file bantuan penurunan harga untuk fungsi baru Anda (serta satu lagi untuk hellofungsi default ).

Sharon Machlis,

Anda dapat membuat paket menggunakan tab RStudio Build. Opsi Instal dan Mulai Ulang cocok digunakan saat Anda sedang mengerjakan kode. Saat Anda ingin membuatnya untuk berbagi, termasuk mendapatkan file sumber atau file biner, lihat menu dropdown More di tab Build.

Jalankan help(package = "yourpackagename")untuk mendapatkan file bantuan untuk fungsi baru tersebut.

Jika Anda ingin menulis sketsa paket, jalankan fungsi paket ini use_vignette()untuk menyiapkannya. Sertakan nama vinyet yang Anda inginkan sebagai argumen, seperti usethis::use_vignette("Intro"). Anda akan melihat vinyet default, di mana Anda dapat mengisi judul vinyet dan teks penjelas.

Semoga itu cukup untuk meyakinkan Anda bahwa cukup mudah untuk menulis paket R dasar! Masih banyak lagi yang dapat Anda lakukan, seperti menambahkan pengujian unit dengan testthat.

Jika Anda ingin mempelajari lebih lanjut tentang pengujian, lihat posting Do More With R saya sebelumnya "Uji kode Anda dengan testthat." Dan Hadley Wickham memiliki seluruh buku tentang paket menulis, tersedia gratis secara online di r-pkgs.had.co.nz, meskipun sekarang sudah agak ketinggalan zaman. Jenny Bryan di RStudio bekerja dengan Wickham dalam pembaruan. Anda dapat melihat sedikit pekerjaan yang sedang berlangsung di r-pkgs.org.