Struktur Paket dengan usethis dan devtools
Buat kerangka direktori paket, DESCRIPTION, dan NAMESPACE dengan bantuan usethis.
Struktur Paket dengan usethis dan devtools adalah pelajaran R Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar R Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus R Academy mencakup 4 pelajaran total.
Mengapa Membuat Paket R?
Paket R adalah cara standar untuk membagikan kode, data, dan dokumentasi yang dapat digunakan kembali. Meskipun Anda tidak pernah menerbitkannya ke CRAN, mengemas kode akan mendorong praktik yang baik: fungsi yang terdokumentasi, pengujian unit, dan ruang nama yang jelas. devtools dan usethis membuat prosesnya mudah dilakukan.
Membuat Kerangka Paket
usethis::create_package('~/mypackage') membuat direktori dengan semua file yang diperlukan: DESCRIPTION, NAMESPACE, dan direktori R/. Proyek baru tersebut otomatis dibuka di RStudio.
# library(usethis)
# library(devtools)
#
# usethis::create_package('~/mypackage')
#
# Creates:
# mypackage/
# DESCRIPTION <- package metadata
# NAMESPACE <- exported symbols (auto-managed by roxygen2)
# R/ <- your R source files
# .Rbuildignore <- files to exclude from package buildsFile DESCRIPTION
File DESCRIPTION adalah manifes paket. Kolom utamanya:
- Title — deskripsi satu baris (kapitalisasi judul, tanpa titik)
- Version — versi semantik (misalnya,
0.1.0) - Author / Authors@R — penulis paket
- Depends — versi R yang diperlukan
- Imports — paket yang dipanggil oleh paket Anda
- License — misalnya, MIT, GPL-3
# DESCRIPTION example:
# Package: mypackage
# Title: Tools for Analyzing Survey Data
# Version: 0.1.0
# Authors@R: person('Alice', 'Smith', email='alice@example.com', role=c('aut','cre'))
# Description: Provides helper functions for cleaning and summarizing survey responses.
# Depends: R (>= 4.1.0)
# Imports: dplyr, stringr
# License: MIT + file LICENSEMenambahkan Fungsi dengan use_r()
usethis::use_r('my_function') membuat R/my_function.R dan membukanya untuk diedit. Setiap file di R/ sebaiknya berisi satu fungsi atau sekelompok kecil fungsi yang saling berkaitan erat. Jangan gunakan pemanggilan source() di dalam file paket.
# usethis::use_r('add') # creates R/add.R
#
# Write your function in R/add.R:
# add <- function(x, y) {
# if (!is.numeric(x) || !is.numeric(y)) stop('x and y must be numeric')
# x + y
# }
#
# Then document it with roxygen2 comments above the function.devtools::load_all() — Siklus Pengembangan
devtools::load_all() (pintasan papan ketik Ctrl+Shift+L di RStudio) menyimulasikan pemasangan dan pemuatan paket. Perintah ini memuat semua file di R/ ke sesi saat ini tanpa benar-benar memasang paket. Inilah inti dari siklus pengembangan berulang.
# Development loop:
# 1. Edit R/add.R
# 2. devtools::load_all() # Ctrl+Shift+L
# 3. add(2, 3) # test interactively
# 4. Go to step 1
#
# load_all() is much faster than install.packages()
# because it skips compilation and installation steps.devtools::check() — Pemeriksaan Menyeluruh
devtools::check() (Ctrl+Shift+E) menjalankan R CMD check — rangkaian pemeriksaan menyeluruh yang digunakan oleh CRAN. Perintah ini memeriksa dokumentasi, pengujian, contoh, ruang nama, dan lainnya. Usahakan tidak ada ERROR, tidak ada WARNING, serta NOTEs sesedikit mungkin.
# devtools::check() # runs R CMD check
#
# Common errors to fix:
# ERROR: Undocumented function 'add' => add roxygen2 docs
# WARNING: No NAMESPACE file => run devtools::document()
# NOTE: No examples => add @examples in roxygen2
# NOTE: Dependencies in DESCRIPTION not used => clean up ImportsStruktur Direktori R/
Semua file sumber diletakkan di R/. Konvensi yang umum:
- Satu file untuk setiap kelompok fungsi (misalnya,
R/utils.R,R/plot_helpers.R) R/data.Runtuk dokumentasi himpunan dataR/zzz.Runtuk kait.onLoad()dan.onAttach()
Jangan membuat subdirektori di dalam R/ — semua file berada di tingkat teratas.
# Typical R/ directory for a small package:
# R/
# add.R <- add() function + documentation
# subtract.R <- subtract() function
# utils.R <- internal helpers (not exported)
# data.R <- documentation for bundled datasets
# package.R <- @docType package documentationDirektori man/
man/ berisi file bantuan .Rd, satu untuk setiap fungsi yang diekspor. Anda tidak boleh mengeditnya secara manual — file tersebut dibuat dari komentar roxygen2 oleh devtools::document(). Sertakan file-file tersebut dalam commit bersama kode sumber.
# man/ is auto-generated:
# man/
# add.Rd <- generated from @title, @param etc. in R/add.R
# subtract.Rd <- generated from R/subtract.R
#
# Regenerate with:
# devtools::document() # also updates NAMESPACE
#
# Never edit .Rd files directly -- changes will be overwritten
cat('Always edit roxygen2 comments, never man/*.Rd files directly
')Direktori tests/
usethis::use_testthat() membuat direktori tests/testthat/ dan menambahkan testthat ke DESCRIPTION. Tulis file pengujian bernama test-*.R di dalam direktori tersebut. Jalankan semua pengujian dengan devtools::test() (Ctrl+Shift+T).
# Set up testing:
# usethis::use_testthat()
#
# Creates:
# tests/
# testthat.R <- runner script (do not edit)
# testthat/
# test-add.R <- your test file
#
# Run tests:
# devtools::test()
# devtools::test_file('tests/testthat/test-add.R')Menambahkan Dependensi dengan Benar
Jangan pernah menggunakan library(pkg) di dalam file sumber paket. Sebagai gantinya:
- Tambahkan paket ke
ImportsdiDESCRIPTIONdenganusethis::use_package('dplyr') - Panggil fungsi dengan
pkg::function()atau tambahkan@importFrom pkg functiondi roxygen2 - Gunakan
Suggestsuntuk paket yang hanya diperlukan dalam contoh atau pengujian
# Add a dependency:
# usethis::use_package('stringr') # adds to Imports
# usethis::use_package('ggplot2', 'Suggests') # adds to Suggests
#
# In R/my_function.R:
# clean_names <- function(x) {
# stringr::str_to_lower(stringr::str_trim(x)) # use pkg:: prefix
# }Ringkasan Alur Kerja Pengembangan Paket
Siklus berulang standar untuk mengembangkan paket R:
create_package()— membuat kerangka satu kaliuse_r('name')— membuat file sumber- Menulis dan mendokumentasikan fungsi (roxygen2)
load_all()— memuat paket ke sesi untuk pengujian interaktifdocument()— membuat ulang man/ dan NAMESPACEtest()— menjalankan pengujian unitcheck()— menjalankan pemeriksaan R CMD secara menyeluruh
Pemeriksaan Singkat: Kolom DESCRIPTION
Kolom DESCRIPTION mana yang mencantumkan paket R yang dipanggil langsung oleh paket Anda (dependensi wajib)?
Rangkuman Struktur Paket
File dan perintah utama dalam pengembangan paket R:
usethis::create_package()— membuat kerangka dengan DESCRIPTION, NAMESPACE, R/DESCRIPTION— metadata Title, Version, Imports, Licenseusethis::use_r('name')— menambahkan file sumber ke R/devtools::load_all()— memuat ulang secara cepat dan berulang (Ctrl+Shift+L)devtools::document()— membuat ulang man/ dari roxygen2devtools::check()— menjalankan pemeriksaan R CMD secara menyeluruh dengan sasaran 0 errors/warnings- Jangan pernah menaruh
library()di sumber paket — gunakanpkg::fn()
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Struktur Paket dengan usethis dan devtools” gratis?
Ya — teks lengkap “Struktur Paket dengan usethis dan devtools” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus R Academy, upgrade ke CoddyKit PRO. Kursus R Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Struktur Paket dengan usethis dan devtools”?
Buat kerangka direktori paket, DESCRIPTION, dan NAMESPACE dengan bantuan usethis. Kamu berlatih R Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai R Academy?
Tidak diperlukan pengalaman sebelumnya. R Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Struktur Paket dengan usethis dan devtools” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran R Academy ini?
Ya. Setiap pelajaran R Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Struktur Paket dengan usethis dan devtools
- Mendokumentasikan Fungsi dengan roxygen2
- Pengujian Unit dengan testthat
- Pengiriman ke CRAN dan Pemeliharaan Paket