usethis ve devtools ile Paket Yapısı
usethis yardımcılarıyla paket dizini iskeletini, DESCRIPTION ve NAMESPACE dosyalarını oluşturun.
usethis ve devtools ile Paket Yapısı, CoddyKit'te ücretsiz bir R Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, R Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. R Academy kursu toplamda 4 dersten oluşur.
Neden R Paketi Oluşturmalısınız?
R paketi, yeniden kullanılabilir kodu, verileri ve belgeleri paylaşmanın standart yoludur. CRAN'da hiç yayımlamasanız bile kodunuzu paketlemek; belgelenmiş işlevler, birim testleri ve açık bir ad alanı gibi iyi uygulamaları zorunlu kılar. devtools ve usethis bu süreci kolaylaştırır.
Paket İskeleti Oluşturma
usethis::create_package('~/mypackage'), gerekli tüm dosyaları içeren bir dizin oluşturur: DESCRIPTION, NAMESPACE ve bir R/ dizini. Yeni projeyi otomatik olarak RStudio'da açar.
# 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 buildsDESCRIPTION Dosyası
DESCRIPTION dosyası, paketin bildirim dosyasıdır. Temel alanları şunlardır:
- Title — tek satırlık açıklama (başlık biçiminde, nokta olmadan)
- Version — anlamsal sürüm (ör.
0.1.0) - Author / Authors@R — paketin yazarı
- Depends — gereken R sürümü
- Imports — paketinizin çağırdığı packages
- License — ör. 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 LICENSEuse_r() ile İşlev Ekleme
usethis::use_r('my_function'), R/my_function.R dosyasını oluşturur ve düzenlemek üzere açar. R/ içindeki her dosya, bir işlev veya birbiriyle yakından ilişkili küçük bir işlev grubunu içermelidir. Paket dosyalarının içinde source() çağrıları kullanmayın.
# 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() — Geliştirme Döngüsü
devtools::load_all() (RStudio'da Ctrl+Shift+L klavye kısayolu), paketin kurulmasını ve yüklenmesini taklit eder. Gerçekte kurulum yapmadan R/ içindeki tüm dosyaları geçerli oturuma kaynak olarak yükler. Bu, yinelemeli geliştirme döngüsünün temelidir.
# 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() — Tam Denetim
devtools::check() (Ctrl+Shift+E), CRAN tarafından kullanılan kapsamlı test paketi olan R CMD check komutunu çalıştırır. Belgeleri, testleri, örnekleri, ad alanını ve daha fazlasını denetler. 0 ERROR, 0 WARNING ve mümkün olduğunca az NOTE hedefleyin.
# 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 ImportsR/ Dizin Yapısı
Tüm kaynak dosyaları R/ içine yerleştirilir. Yaygın kurallar şunlardır:
- Her işlev ailesi için bir dosya (ör.
R/utils.R,R/plot_helpers.R) - Veri kümesi belgeleri için
R/data.R .onLoad()ve.onAttach()kancaları içinR/zzz.R
R/ içinde alt dizin bulunmaz; tüm dosyalar doğrudan en üst düzeydedir.
# 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 documentationman/ Dizini
man/, dışa aktarılan her işlev için bir tane olmak üzere .Rd yardım dosyalarını içerir. Bunları elle asla düzenlememelisiniz; devtools::document() tarafından roxygen2 yorumlarından oluşturulurlar. Bunları kaynak kodunuzla birlikte işleyin.
# 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
')tests/ Dizini
usethis::use_testthat(), tests/testthat/ dizinini oluşturur ve testthat'i DESCRIPTION dosyasına ekler. Bu dizinin içinde test-*.R adını taşıyan test dosyaları yazın. Tüm testleri devtools::test() (Ctrl+Shift+T) ile çalıştırın.
# 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')Bağımlılıkları Doğru Biçimde Ekleme
Paket kaynak dosyalarının içinde hiçbir zaman library(pkg) kullanmayın. Bunun yerine:
usethis::use_package('dplyr')ile paketiDESCRIPTIONiçindekiImportsalanına ekleyin- İşlevleri
pkg::function()ile çağırın veya roxygen2 içinde@importFrom pkg functionekleyin - Yalnızca örneklerde veya testlerde gereken paketler için
Suggestskullanın
# 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
# }Paket Geliştirme İş Akışının Özeti
R paketi geliştirme için standart yinelemeli döngü:
create_package()— iskeleti bir kez oluşturunuse_r('name')— bir kaynak dosyası oluşturun- İşlevleri yazın ve belgeleyin (roxygen2)
load_all()— etkileşimli test için oturuma yükleyindocument()— man/ ve NAMESPACE dosyalarını yeniden oluşturuntest()— birim testlerini çalıştırıncheck()— tam R CMD check denetimi
Hızlı Kontrol: DESCRIPTION Alanları
Paketinizin doğrudan çağırdığı R paketlerini (zorunlu bağımlılıkları) hangi DESCRIPTION alanı listeler?
Paket Yapısının Özeti
R paketi geliştirme için temel dosyalar ve komutlar:
usethis::create_package()— DESCRIPTION, NAMESPACE ve R/ içeren iskeleti oluştururDESCRIPTION— Title, Version, Imports ve License üst verileriusethis::use_r('name')— R/ içine bir kaynak dosyası eklerdevtools::load_all()— hızlı yinelemeli yeniden yükleme (Ctrl+Shift+L)devtools::document()— man/ dizinini roxygen2'dan yeniden oluştururdevtools::check()— 0 hata/uyarı hedefiyle tam R CMD check denetimi- Paket kaynağında hiçbir zaman
library()kullanmayın;pkg::fn()kullanın
Sıkça Sorulan Sorular
“usethis ve devtools ile Paket Yapısı” dersi ücretsiz mi?
Evet — “usethis ve devtools ile Paket Yapısı” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve R Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. R Academy kursu toplamda 4 dersten oluşur.
“usethis ve devtools ile Paket Yapısı” dersinde ne öğreneceğim?
usethis yardımcılarıyla paket dizini iskeletini, DESCRIPTION ve NAMESPACE dosyalarını oluşturun. R Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
R Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te R Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“usethis ve devtools ile Paket Yapısı” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu R Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her R Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- usethis ve devtools ile Paket Yapısı
- roxygen2 ile İşlevleri Belgeleme
- testthat ile Birim Testi
- CRAN'e Gönderim ve Paket Bakımı