logo R + paket
trenutno web-developer / R programer pri Rapporter Ltd.
5+ godina iskustva: R, webdev, GNU/Linux
prokrastinacija osnovnih studija psihologije (Level 3 Apsolvent)
R je programski jezik za statističku analizu i grafičko prikazivanje podataka
nastao kao open-source implementacija programskog jezika S, Chambers 1976.
geek humor: referenca ka C programskom jeziku
autori Ross Ihaka, Robert Gentleman
R prema početnim slovima imena autora?
cross-platform: dostupan za Linux, Windows i MacOS
pragmatičan - pisan je od strane statističara za statističare
što možda i nije tako dobra ideja…
velika korisnička baza: preko 2 miliona korisnika
odlične mogućnosti grafičkog prikazivanja podataka
ekstenzibilnost: preko 4.5K paketa na CRAN mreži
length(available.packages()[, 1])
binarna datoteka: arhiva dokumentovanih R skripti (i još ponešto preko…)
add-on/ekstenzija/plugin koji proširuje osnovnu funkcionalnost R-a
CRAN: Comprehensive R Archive Network
http://cran.r-project.org/
mreža repozitorijuma paketa
prilagođeni paketi korisnika
nema šta nema
http://cran.r-project.org/web/views/
pretraga CRAN paketa/funkcija
ostale distributivne mreže R paketa
https://r-forge.r-project.org/
http://www.bioconductor.org/install/
https://github.com/languages/R
ne, ozbiljno… zašto? i kada?
kada raspolažete trustom R skripti/funkcija koje:
su namenjene rešavanju konkretnog tipa problema ili se odnose na određenu oblast
želeli biste da dokumentujete funkcije koje svakodnevno koristite
mislite da bi drugima bile od pomoći
samo na CRAN mreži postoji preko 4500 paketa, barem jedan ce vam biti od pomoći
LaTeX je dobrodošao pri pisanju dokumentacije
poželjno je znati neki od CVS: git, svn, bzr
softver za upravljanje izvornim kodom
http://github.com/
http://bitbucket.org/
http://gitorious.org/
bitne konfiguracione datoteke:
demonstracija: postaviti paket na neki od servisa
objekte unutar globalnog okruženja
ls()
pakete i objekte u search path
search()
predlozi? hello.world() ili npr. funkcija koja testira oblik distribucije
Debian Control File (`?read.dcf`)
http://www.debian.org/doc/debian-policy/ch-controlfields.html
obavezna polja: `Package`, `Version`, `License`, `Description`, `Title`, `Author`, `Maintainer`
ASCII, ako nije moguće, onda navesti `Encoding` (UTF8)
`Author <email>` / `Maintainer <email>`
nema svrhe navoditi R bez konkretne verzije/SVN revizije
`base` paket se uvek koristi
za eksterne pakete `SystemRequirements`
za pakete koji se nalaze u primerima, testovima ili vinjetama
paketi čiji je Namespace potreban da bi se paket učitao sa `library()` navesti u `Imports`
paketi koji su neophodni za učitavanje paketa u `Depends`
za uspešno izvršavanje komande `R CMD check` navesti pakete bilo u `Depends`, `Suggests` ili `Imports`
za testove, koristiti `Suggests` ili `Enhances`
za pakete potrebne zbog podataka (`datasets`) ili vinjeta koristiti `Suggests`
precizno navesti podatke o verzijama paketa:
prilikom pozivanja komande `library()` proveravaju se zavisnosti verzija paketa (dependencies)
`install.packages()` proverava `Depends`, `Imports` i `Suggests` za `dependencies = TRUE`
`URL` - linkovi odvojeni `,` ili ` `
`BugReports` - URL prema interfejsu za prijavljivanje grešaka u paketu (bugtracker)
`Collate` - redosled učitavanja datoteka (default: C locale)
`LazyData` (pre R v2.14 `LazyLoad`)
`Language` - ukoliko dokumentacija nije na engleskom
`NEWS` ili `ChangeLog` - promene u novim verzijama paketa
`inst/CITATION` - `bibentry()`
`R` - za R skripte (koristiti `.R` ekstenziju)
`man` - za dokumentaciju (koristiti `roxygen2`)
`data` - za podatke koji idu uz paket (bilo `.rda` ili `.R`)
`demo` - skripte koje demonstriraju funkcionalnost paketa `demo()`
`inst` - poddirekorijumi će biti prekopirani u instalacioni folder
`src` - za C, C++ ili Fortran datoteke
`exec` - za izvršne datoteke
`vignettes` - za vinjete, Sweave je neophodan!
ne koristiti `R`, `data`, `demo`, `exec`, `libs`, `man`, `help`, `html` i `Meta`
testovi, dodatne datoteke, itd.
`roxygen2` - implementacija doxygen za R: dokumentacija unutar R skripti
`LaTeX`-olika sintaksa: `\itemize`, `\enumerate`, `\emph`, `\code`, `\link`, itd.
izbegavati “ručno” pisanje `.Rd` datoteka, koristite `roxygen`!
`@description` - drugi pasus
ukoliko je izostavljen, `roxygen` će je zameniti sa `@title`
`@details` - sve od trećeg pasusa pa na dalje
`@param` - dokumentacija formalnog argumenta funkcije
`@return` - opis objekta koji data funkcija “vraća”
`\dontrun{}`
`@export` - da li je funkcija “vidljiva”, tj. mogu da je koriste ostali (nije specifična za paket, interna)
`@author Ime Prezime <email@@example.com>`
`@usage` - primeri upotrebe date funkcije
`@genericMethods` - za S4 klase
`–as-cran` za kompatibilnost sa CRAN konvencijama
voditi računa o `.Rprofile` (`–vanilla`)
`install.package(‘testthat’)`
sadrži funkcije koje pomažu razvoj paketa
autor Hadley Wickham - garancija kvaliteta :-)
http://cran.r-project.org/doc/manuals/R-exts.html
Creating R Packages: A Tutorial - Friedrich Leisch
http://cran.r-project.org/doc/contrib/Leisch-CreatingPackages.pdf
https://github.com/hadley/devtools/wiki/Package-basics
kreiranje paketa uz pomoć Rstudio softvera
http://www.rstudio.com/ide/docs/packages/overview
Szilard Pafka & Jeroen Ooms - Bay Area RUG
http://www.youtube.com/watch?v=TER-rQoVs0k
Rory Winston - Melbourne RUG
http://www.youtube.com/watch?v=8-dGf-7arFI
http://www.youtube.com/playlist?list=PLF5EBA589570CA2F0
https://www.gnu.org/software/make/
http://beyondgrep.com/
http://ess.r-project.org/
http://rstudio.com/
http://marketplace.eclipse.org/content/statet-r
http://www.r-project.org/mail.html
http://stackoverflow.com/questions/tagged/r
http://www.r-bloggers.com/
http://i.imgur.com/Cj733f7.jpg