Sei sulla pagina 1di 2

Sviluppo del Package Setup ( DESCRIPTION)

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

Potrebbero piacerti anche