Kako napisati R paket

Kad vidite "R paket", možete pomisliti "Nešto za dijeljenje s drugim ljudima." Ali paket R također može biti dobar način da organizirate vlastiti posao samo za sebe . A posebno vaše buduće ja.

Paketi R daju vam dosljednu strukturu, tako da je vjerojatnije da ćete refaktorirati kôd u funkcije. I, barem jednako važno: Paketi vam pružaju dosljedan način dokumentiranja svake vaše funkcije. Dakle, sljedeće godine postoji veća šansa da ćete se sjetiti koji dijelovi koda što rade.

Postavljanje sustava

Prvo, želite postaviti svoj sustav. Za lakši razvoj paketa, predlažem da provjerite imate li na svom sustavu instalirane sljedeće knjižnice: devtools, usethis, roxygen2, testthat, knitr i rmarkdown.

Vjerojatno vam treba i malo više postavljanja sustava. U sustavu Windows instalirajte softver pod nazivom Rtools. To je zapravo softverska aplikacija, a ne R paket. Na Macu je korisno nabaviti Xcode iz App Storea.

Ako niste sigurni je li vaš sustav spreman za pisanje paketa, devtools ima funkciju has_devel()koja provjerava je li vaše okruženje za razvoj paketa u redu. Predlažem da to pokrenete nakon što instalirate devtools.

Sharon Machlis /

Dalje, možete stvoriti novi paket u RStudiou tako da odete na File> New Project> New Directory i odaberete R Package.

Pitaće vas za naziv paketa i želite li stvoriti Git spremište (što ja obično radim) i koristiti packrat (što obično ne želim).

Na donjoj desnoj ploči nakon stvaranja paketa, imajte na umu da je stvoreno nekoliko datoteka i dva direktorija. 

Poddirektorij R je mjesto gdje sve moje R skripte trebaju živjeti. Mapa čovjeka služi za dokumentaciju - točnije, datoteke pomoći za rad . RStudio također stvara uzorak hello.RR funkcije.

Postoji i nekoliko važnih datoteka u glavnom direktoriju. Objašnjenje NAMESPACEbi moglo biti članak za sebe, ali početnici mogu računati na to da će se devtools i ovi paketi pobrinuti za to.

DESCRIPTIONima neke važne potrebne metapodatke o paketu, pa ih morate ispuniti. To su uglavnom jednostavne stvari poput naziva paketa, autora, opisa i licence. Tu je i ovisnost paketa.

Ovaj se paket može za vas nositi s odgovarajućim formatom ovisnosti o paketu. Na primjer, ako vam je potreban paket lubridata za svoj paket, možete ga učitati library(usethis)i zatim pokrenuti use_package("lubridate")za dodavanje ovisnosti. Možete vidjeti kako ovo automatski dodaje potreban tekst u DESCRIPTIONdatoteku u videozapisu ugrađenom na vrh ovog članka (ili pokretanjem sličnog koda na vlastitom sustavu).

Napišite i dokumentirajte svoje funkcije

Dalje, napišite bilo koju funkciju kao i obično i spremite je kao R skriptu u R direktorij. Datoteci možete dati ime kako želite, a u datoteku možete uključiti jednu ili više funkcija.

Roxygen nudi jednostavan način dodavanja dokumentacije funkciji. Postavite pokazivač bilo gdje u definiciji funkcije i odaberite opciju izbornika RStudio Kod> Umetni kostur kisika.

To vam daje određenu skelu za dokumentiranje funkcije na način koji R razumije, kao što je 

# 'Naslov

# '

# '@param dan

# '

# '@povrat

# '@export

# '

# '@primjeri

Polje Naslov prilično je samorazumljivo, a možete dodati i redak za kratki opis. Postoji @paramredak za svaki argument funkcije (u ovom primjeru funkcija ima jedan pozvani argument day) @return, i @examples. @paramje mjesto gdje dokumentirate koji tip podataka treba biti argument i možete dati mali opis. @returngovori koja se vrsta objekta vraća. @examplesnije potrebno, ali morate dati primjer ili izbrisati tu zadanu @examples.

Da biste pretvorili ovu skelu u datoteku pomoći R paketa, pokrenite devtools::document()funkciju.

Ako pogledate u direktorij man, trebali biste imati datoteku pomoći Markdown za svoju novu funkciju (kao i drugu za zadanu hellofunkciju).

Sharon Machlis,

Paket možete izraditi pomoću kartice RStudio Build. Opcija Instaliraj i ponovno pokreni dobro je kad ste usred rada na svom kodu. Kada ga želite izgraditi za dijeljenje, uključujući dobivanje izvorne datoteke ili binarne datoteke, pogledajte padajući meni Više na kartici Izgradnja.

Pokrenite help(package = "yourpackagename")da biste preuzeli datoteku pomoći za novu funkciju.

Ako želite napisati vinjetu paketa, pokrenite use_vignette()funkciju ovog paketa da biste je postavili. Kao argument navedite naziv vinjete koju želite, kao što je usethis::use_vignette("Intro"). Trebali biste vidjeti zadanu vinjetu, gdje možete ispuniti naslov vinjete i tekst objašnjenja.

Nadam se da je to dovoljno da vas uvjerim da je prilično lako napisati osnovni R paket! Možete učiniti puno više, poput dodavanja u unit testovima s testthat.

Ako želite saznati više o testiranju, pogledajte moj prethodni post Napravite više sa R ​​"Testirajte svoj kôd testthatom." A Hadley Wickham ima čitavu knjigu o pisanju paketa, dostupnu besplatno na Internetu na r-pkgs.had.co.nz, iako je sada malo zastarjela. Jenny Bryan iz RStudio surađuje s Wickhamom na ažuriranju. Dio rada u tijeku možete vidjeti na r-pkgs.org.