Il file DESCRIPTION descrive il lavoro e imposta come il
con devtools Scheda di Riferimento package coopererà con altri packages. Package: mypackage Title: Title of Package Version: 0.1.0 Devi avere un file DESCRIPTION Authors@R: person("Hadley", "Wickham", email = "hadley@me.com", role = c("aut", "cre")) Includi i packages esterni con Struttura del Package devtools::use_package() Description: What the package does (one paragraph) Depends: R (>= 3.1.0) Un package è una convenzione per organizzare file Aggiunge il package agli Imports field (o Suggests field License: GPL-2 se il secondo argomento è "Suggests"). LazyData: true all’interno delle directory. Imports: Importa packages che il tuo package necessita per lavorare. R li dplyr (>= 0.4.0), installerà quando installerà il tuo Questa scheda mostra come lavorare con le 7 parti CC0 MIT GPL-2 ggvis (>= 0.2) package. piu comuni di un package R: Nessuna stringa Si applica la licenza MIT Si applica la licenza GPL-2 al Suggests: Suggerisci packages che non sono allegata. al codice se condivisa. codice, e tutti i codici che lo knitr (>= 0.1.0) strettamente necessari al tuo. Gli impacchettano, se condiviso. utenti possono installarli manualmente. Setup Write code Test Scrivi Codice ( R/) SetupTest ( (DESCRIPTION) tests/) The DESCRIPTION file describes your work and Document Tutto il codice R del tuo package va in R/. Un package Usa tests/ per memorizzare i test che ti sets up how your package will work with other Teach con solo la directory R/ è comunque utile. informaranno se il codice si interrompe. packages. Add data Organize Crea un nuovo progetto con You mustuna Aggiungi have a DESCRIPTION directory file tests/ e importa testthat devtools::create("path/to/name") Add the packages that yours relies on with con I contenuti di un package possono essere salvati su disco Crea un template per sviluppare nel package. devtools::use_package() devtools::use_testthat() come: • sorgente – un directory con tutto il contenuto (vedi Salva il codice in R/ come script Adds a package to the Imports file (default) or sopra) Imposta Suggeststest automatici field (if secondcon testthatis "Suggests"). argument • impacchettato – un singolo file compresso (.tar.gz) (estensione .R) Scrivi test con context(), test() • binario – un singolo file compresso ottimizzato per uno Imports Suggests specifico OS Workflow Salva that Import packages il test yourcome packagefile .R in tests/testthat/ Suggest packages that re not really O installati in una libreria R (caricati in memoria durante una sessione R) o archiviati online in un repository. Le funzioni qui 1. Modifica il codice. must have to work. R will install them essential to yours. Users can install when it installs your package. them manually, or not, as they like. sotto mostrano come spostarsi nei vari stati. 2. Carica il codice con Workflow Example test devtools::load_all() 1. Modifica codice o test. Package: mypackage
Ricarica tutti i file salvati in R/ nella memoria. 2. Testa
Title: Title of Package il tuo Version: 0.1.0 codice con: context("Arithmetic") devtools::test() Ctrl/Cmd + Shift + L (keyboard shortcut) Authors@R: person("Hadley", "Wickham", email = Esegue role =inc("aut",test_that("Math tutti i test salvati "hadley@me.com", "cre", "cst")) works", { Salva tutti i file e poi chiama load_all(). Description: What the package does (one paragraph)+ 1, 2) tests/. expect_equal(1 Depends: R (>=+3.1.0) expect_equal(1 + 2, 3) Ctrl/Cmd Shift + T 3. Prova nella console. License: GPL-2 (keyboard shortcut) }) expect_equal(1 + 3, 4) LazyData: true 4. Ripeti. 3. Ripeti Imports:finchè i test non hannodplyr successo (>= 0.4.0), ggvis (>= 0.2) • Usa stile consistente con r-pkgs.had.co.nz/r.html#style Suggests: expect_equal() È uguale all’interno di una certa tolleranza? • Clicca su una funzione e premi F2 per aprire la definiz. knitr (>= 0.1.0) expect_identical() È esattamente uguale? • Cerca una funzione con Ctrl + . expect_match() Corrispondenza specificata da stringa o expr. regolare? expect_output() Stampa specifico output? expect_message() Mostra specifico messaggio?
Visita r-pkgs.had.co.nz expect_warning()
expect_error() Mostra specifico avvertimento? Lancia specifico errore? devtools::add_build_ignore("file") Per saperne di più visita http://r-pkgs.had.co.nz • devtools 1.6.1 • Updated: 1/15 expect_is() L’output eredita da una certa classe? Aggiunge file a .Rbuildignore, una lista di file che non RStudio® è un prodotto registrato di RStudio, Inc. • Tutti i diritti riservati expect_false() ritorna FALSE? saranno inclusi nella costruzione del package. info@rstudio.com • 844-448-1212 • rstudio.com expect_true() ritorna TRUE? RStudio® è un marchio registrato di RStudio, Inc. • CC BY RStudio • info@rstudio.com • 844-448-1212 • rstudio.com Per saperni di più visita http://r-pkgs.had.co.nz • devtools 1.6.1 • Updated: 1/15 Tradotto da Angelo SALATINO • aasalatino@gmail.com • http://salatino.org Documentazione ( man/) Aggiungi Dati ( data/) man/ contiene la documentazione delle tue funzioni, le pagine di help nel tuo package. La directory data/ acconsente di includere dati nel tuo package. Usa i commenti roxygen per commentare ogni Il pacchetto roxygen funzione accanto alla sua definizione Conserva i dati in una tra data/, R/Sysdata.rda, Documenta il nome di ogni data set esportato roxygen permette di scrivere la documentazione nei file .R inst/extdata con una sintassi abreviata. Usa sempre LazyData: true nel file Includi esempi utili per ogni funzione • Aggiungi documentazione roxygen come righe di DESCRIPTION commento che cominciano con #’. Salva dati come file .Rdata (suggerito) Workflow • Piazza il commento direttamente sopra il codice che definisce l’oggetto documentato. 1. Aggiungi commenti roxygen nel file .R • Piazza un tag roxygen @ tag dopo #’ per fornire una devtools::use_data() 2. Converti i commenti roxygen nella documentazione specifica sezione della documentazione. • Linee non taggate verranno utilizzare per creare Aggiunge dati in data/ con uno dei seguenti: devtools::document() sezione titoli, descrizioni, e dettagli (R/Sysdata.rda se internal = TRUE) Converte i commenti roxygen in file .Rd e li devtools::use_data_raw() inserice in man/. Costruisce NAMESPACE. #' Add together two numbers. Aggiunge uno script R usato per pulire il dataset Ctrl/Cmd + Shift + D (Keyboard Shortcut) #' to data-raw/. Include data-raw/ su .Rbuildignore. #' @param x A number. Salva dati in 3. Apri help con ? Per l’anteprima della #' @param y A number. • data/ per rendere i dati disponibili agli utenti documentazione #' @return The sum of \code{x} and \code{y}. • R/sysdata.rda per mantenere i dati ad uso interno #' @examples 4. Ripeti #' add(1, 1) delle funzioni #' @export • inst/extdata per rendere disponibili i raw data per il .Rd formatting tags \email{name@@foo.com} add <- function(x, y) { caricamento e il parsing degli esempi. Accedi a questi \href{url}{display} x+y dati con system.file() } \emph{italic text} \url{url} \strong{bold text} Tag roxygen comuni Organizza ( NAMESPACE) \code{function(args)} \link[=dest]{display} \pkg{package} \linkS4class{class} Il file NAMESPACE permette di rendere il package @aliases @inheritParams @seealso autosufficiente: non interferirà con altri packages, e \code{\link{function}} \dontrun{code} \code{\link[package]{function}} @concepts @keywords @format altri packages non interferiranno con esso. \dontshow{code} @describeIn @param @source data \donttest{code} \tabular{lcr}{ Esporta funzioni inserendo @export nei commenti @examples @rdname @include left \tab centered \tab right \cr roxygen \deqn{a + b (block)} cell \tab cell \tab cell @export @return @slot S4 Importa oggetti da ogni altro packages con \eqn{a + b (inline)} \cr @family @section @field RC package::object (consigliato) o @import, } @importFrom, @importClassesFrom, @importMethodsFrom (non sempre consigliati) Insegna ( vignettes/) Workflow vignettes/ contiene documenti che insegnati gli utenti 1. Modifica il tuo codice o test. su come risolvere problemi reali con i tuoi tool. --- title: "Vignette Title" 2. Documenta tuo package Crea una directory vignettes/ e un template vignette con author: "Vignette Author" (devtools::document()) date: "`r Sys.Date()`" devtools::use_vignette() output: rmarkdown::html_vignette 3. Controlla NAMESPACE Aggiungi template vignette come vignettes/my- vignette: > vignette.Rmd. %\VignetteIndexEntry{Vignette Title} 4. Ripeti finché il NAMESPACE è corretto %\VignetteEngine{knitr::rmarkdown} Aggiungi intestazioni YAML alle tue vignettes (vedi a destra) \usepackage[utf8]{inputenc} Scrivi il bodi delle vignettes in R Markdown --- Invia il tuo package (rmarkdown.rstudio.com) r-pkgs.had.co.nz/release.html RStudio® è un marchio registrato di RStudio, Inc. • CC BY RStudio • info@rstudio.com • 844-448-1212 • rstudio.com Per saperni di più visita http://r-pkgs.had.co.nz • devtools 1.6.1 • Updated: 1/15 Tradotto da Angelo SALATINO • aasalatino@gmail.com • http://salatino.org