0Pricing
R Academy · Ders

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 builds

DESCRIPTION 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 LICENSE

use_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 Imports

R/ 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çin R/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 documentation

man/ 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 paketi DESCRIPTION içindeki Imports alanına ekleyin
  • İşlevleri pkg::function() ile çağırın veya roxygen2 içinde @importFrom pkg function ekleyin
  • Yalnızca örneklerde veya testlerde gereken paketler için Suggests kullanı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ü:

  1. create_package() — iskeleti bir kez oluşturun
  2. use_r('name') — bir kaynak dosyası oluşturun
  3. İşlevleri yazın ve belgeleyin (roxygen2)
  4. load_all() — etkileşimli test için oturuma yükleyin
  5. document() — man/ ve NAMESPACE dosyalarını yeniden oluşturun
  6. test() — birim testlerini çalıştırın
  7. check() — 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şturur
  • DESCRIPTION — Title, Version, Imports ve License üst verileri
  • usethis::use_r('name') — R/ içine bir kaynak dosyası ekler
  • devtools::load_all() — hızlı yinelemeli yeniden yükleme (Ctrl+Shift+L)
  • devtools::document() — man/ dizinini roxygen2'dan yeniden oluşturur
  • devtools::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

  1. usethis ve devtools ile Paket Yapısı
  2. roxygen2 ile İşlevleri Belgeleme
  3. testthat ile Birim Testi
  4. CRAN'e Gönderim ve Paket Bakımı
← R Academy Sayfasına Dön