Internseminar: Git, GitHub, RStudio og innpakkede register

Are Edvarsen
2015-12-22

TOC

  • Git og GitHub
  • Pakker i R og RStudio
  • Register i en R-pakke

Git og GitHub

Git: formål/egenskaper

  • for tekst/programkode (innhold, som i subversion)
  • gir kontroll på endringer (versjonshåndtering, som i subversion)
  • gir mulighet for eksperimentering (som i subverion, bare mye bedre)
  • gir mulighet for samarbeid (som subversion, bare bedre)

Git: start

git init
  • Gjør ev. nødvendige innstillinger, e.g. navn, e-post og editor
  • Klar, ferdig, gå!
git status
git add
git commit
git mv
git rm

Git: grein

  • Verktøy for eksperimentering
  • Beskytter deg sjøl (og andre) når ting kan “eksplodere”
  • Lett å bruke (ja, når man først har tatt det i bruk)
  • Standard navn er 'master', betyr ikke noe spesielt og er bare et navn
git branch
git checkout
git merge

Git: greinstruktur

  • Akkurat slik du og flokken din vil ha det
  • Et godt eksempel

Git: deling og samarbeid

  • En vanlig start er å “laste ned” et eksisterende “repository”:
git clone https://github.com/Rapporteket/nordummy
  • Når du ønsker å dele det du har gjort:
git push https://github.com/Rapporteket/nordummy master

Git: deling og samarbeid, forts.

  • Trenger et sentralt “lager” (som subversion)
  • Sentral enhet kan settes opp sjøl (også som subversion)
  • Finnes allerede som fungerende “skytjeneste” (ikke akkurat som subversion)

GitHub: ei slags fjæsbok...

  • Omvisning i det lille jeg kan…
  • Se her

Pakker i R og RStudio

RStudio, se så fin...

  • editor
  • konsoll
  • filbehandler
  • jada, jada…

RStudio sin trollmann

  • Prosjektorganisering
  • Ulike kategorier av prosjekter:
    • tomt
    • R-pakke
    • R Shiny
  • Ulike utgangspunkt for prosjekt
    • tomt
    • eksisterende katlog/filer
    • eksisterende under versjonskontroll i svn eller git

RStudio er egnet til...

  • Generelt arbeid i R…
  • Lage presentasjoner/teksdokumenter (markdown, DEMO)
  • Produsere presentasjoner/teksdokumenter til ulike formater og distribusjonskanaler
  • Lage webapplikasjoner (Shiny, DEMO)
  • Etablering og arbeid med pakker i R
  • Sterk og brukervennlig tilknytning til versjonskontroll

Øvelse

  • Etablér en ny pakke i RStudio med bruk av git
  • Legg til to predefinerte R-kildefiler (neste to slides)
  • Sett filene i pakken under versjonskontroll
  • Gjør innstilling i “Project Options…”: dok med Roxygen
  • Kjør: Build -> Check
  • Kjør: Clean and Rebuild
  • Commit alle endringer i git underveis

dummyFunction.R

#' Dummy R function
#' 
#' Dummy R function mainly to show how functions are documented.
#' Please make sure everything is documented in a way that others
#' can understand and use.
#' 
#' @param someDistribution Vector of some distribution
#' 
#' @return density Density table of some distribution
#' @return somePlot a histogram of some distribution
#' 
#' @export

dummyFunction <- function(someDistribution) {

  hist(someDistribution)
  list(density = density(someDistribution))

}

myPackage.R

#' Describes myPackage (heading)
#'
#' Describe myPackage even further (paragraph)
#'
#' @section Functions:
#' Say something nice to me...
#'
#' @section Whatever:
#' More, please
#'
#' @examples
#' someDistribution <- rnorm(seq(0,10, length=200), mean=3, sd=1)
#' dens <- dummyFunction(someDistribution)
#' 
#' @docType package
#' @name myPackage
NULL

Register i en R-pakke

Forarbeid

Installér “rapbase” i R-konsollet:

devtools::install_github("Rapporteket/rapbase")

Følg ev også instruksjonene i “README” fra github

Øvelse: opprett prosjekt fra RStudio, I

  • Sett opp nytt prosjekt i RStudio basert på “nordummy” fra github
  • Kjør “Check”, rett ev feil
  • Bygg og installér (alt i RStudio)

Kort gjennomgang av strukturen

  • R/
  • DESCRIPTION
  • man/
  • vignettes/
  • tests/
  • NAMESPACE
  • data/
  • src/
  • inst/

Se denne nettsida for mer detaljert informasjon

Øvelse: opprett prosjekt fra RStudio, II

  • Sett opp nytt prosjekt i RStudio basert på “norscir” fra github
  • Kjør “Check”, rett ev feil
  • Bygg og installér (alt i RStudio)
  • Se selv hvilke filer som ligger i de ulike katalogene

Fokusområder

  • brutt opp i minder deler/funksjoner
  • avhengigheter til- og bruk av “rapbase”
  • vignett

Kort gjennomgang av "rapbase"

  • Forenkling ved å legge fellesfunksjonalitet her
  • Om man gjør det riktig blir det slik overalt (og ved feil så tryner alt)
  • Skal automagisk sørge for nødvendig konfigurasjon ved installasjon på Rapporteket

Øvelse: bruk av github

  • commit alle endringer med kommentarer
  • push alle endringer til github