
In R zijn er talloze verschillende functies. Hieronder zal ik tien van de interessantste functies opsommen die veel mensen misschien niet kennen. Dit artikel kwam tot stand nadat ik ontdekte dat mijn verhalen over sommige mogelijkheden van R, waarvan ik gebruik maak in mijn werk, enthousiast werden ontvangen door collega-programmeurs. Als je hier al van op de hoogte bent, mijn excuses voor de tijd die je hebt verloren. Maar als je iets wilt delen, laat alsjeblieft een nuttige suggestie achter in de opmerkingen.
Skillbox raadt aan: Praktische cursus .
Ter herinnering: voor alle lezers van «Habr» — een korting van 10.000 roebel bij inschrijving voor elke cursus van Skillbox met de promocode «Habr».
De switch-functie
Ik hou echt, echt van switch(). Het is eigenlijk een handige verkorting van de if-operator bij het kiezen van een waarde op basis van de waarde van een andere variabele. Ik vind dit vooral handig wanneer ik code schrijf die een specifieke dataset moet laden op basis van een eerdere keuze. Bijvoorbeeld, als er een variabele is met de naam animal en je een bepaalde dataset moet selecteren afhankelijk van of het dier een hond, kat of konijn is, schrijf dan als volgt:
data < - read.csv(
switch(animal,
«dog» = «dogdata.csv»,
«cat» = «catdata.csv»,
«rabbit» = «rabbitdata.csv»)
)
Deze mogelijkheid is handig in Shiny-applicaties, waar diverse datasets of omgevingsbestanden moeten worden geladen afhankelijk van een of meerdere invoermenu's.
Sneltoetsen voor RStudio
Deze hack is niet zoveel voor R, maar voor de RStudio IDE. Toch zijn sneltoetsen altijd zeer handig, omdat ze tijd besparen bij het typen. Mijn favorieten zijn Ctrl+Shift+M voor de %>% operator en Alt+- voor de <- operator.
Om alle sneltoetsen te bekijken, druk gewoon op Alt+Shift+K in RStudio.
Het flexdashboard-pakket
Wanneer je snel een Shiny-dashboard wilt opzetten, is er niets beter dan het dashboard-pakket. Het biedt de mogelijkheid om te werken met HTML-snelkoppelingen, die op hun beurt eenvoudig en probleemloos zijbalken, rijen en kolommen creëren. Er is ook de optie om een title bar te gebruiken, waardoor deze op verschillende pagina's van de applicatie kan worden geplaatst, evenals iconen, snelkoppelingen naar Github, e-mailadressen en nog veel meer.
Het pakket maakt werken binnen Rmarkdown mogelijk, zodat je alle applicaties in één Rmd-bestand kunt plaatsen, in plaats van ze over verschillende servers en UI-bestanden te verspreiden, zoals bijvoorbeeld gedaan wordt met shinydashboard. Ik gebruik flexdashboard altijd als ik een eenvoudig prototype van een dashboard moet maken, voordat ik begin met iets complexers. Deze functie maakt het mogelijk om binnen een uur een prototype te maken.
De functies req en validate in R Shiny
Ontwikkeling in R Shiny kan verwarrend zijn, vooral wanneer je constant vreemde foutmeldingen ontvangt die het moeilijk maken om te begrijpen wat er aan de hand is. Maar na verloop van tijd ontwikkelt Shiny zich en verbetert het, en er komen steeds meer functies bij die helpen om de oorzaak van de fout te achterhalen. Zo lost req() het probleem op van een 'stille' fout, waarbij niet duidelijk is wat er mis is. Hiermee kan je UI-elementen weergeven die verband houden met eerdere acties. Laten we dit toelichten met een voorbeeld:
output$go_button <— shiny::renderUI({
# only display button if an animal input has been chosen
shiny::req(input$animal)
# display button
shiny::actionButton("go",
paste("Conduct", input$animal, "analysis!")
)
})
validate() controleert alles voordat het wordt gerenderd en geeft de mogelijkheid om een foutmelding weer te geven — bijvoorbeeld dat de gebruiker een verkeerd bestand heeft geüpload:
# get csv input file
inFile <— input$file1
data <— inFile$datapath
# render table only if it is dogs
shiny::renderTable({
# check that it is the dog file, not cats or rabbits
shiny::validate(
need("Dog Name" %in% colnames(data)),
"Dog Name column not found — did you load the right file?"
)
data
})
Meer gedetailleerde informatie over al deze functies .
Je eigen inloggegevens opslaan in de systeemomgeving
Als je van plan bent code te delen waarin inloggegevens moeten worden ingevoerd, gebruik dan de systeemomgeving om te voorkomen dat je je eigen inloggegevens op Github of een andere service plaatst. Voorbeeld van opslaan:
Sys.setenv(
DSN = "database_name",
UID = "User ID",
PASS = "Password"
)
Nu kun je inloggen met behulp van omgevingsvariabelen:
db <— DBI::dbConnect(
drv = odbc::odbc(),
dsn = Sys.getenv("DSN"),
uid = Sys.getenv("UID"),
pwd = Sys.getenv("PASS")
)
Het is nog handiger (vooral als je de gegevens vaak gebruikt) om ze als omgevingsvariabelen direct in het besturingssysteem in te stellen. In dat geval zijn ze altijd beschikbaar en hoef je ze niet in de code op te geven.
Automatisering van tidyverse met styler
Het styler-pakket kan helpen om de code schoon te maken, met veel mogelijkheden voor het automatisch aanpassen van de code-stijl in tidyverse. Alles wat je hoeft te doen, is styler::style_file() uitvoeren voor je problematische script. Het pakket doet veel (maar niet alles) om orde te scheppen.
Parameterisatie van R Markdown-documenten
Dus je hebt een geweldig R Markdown-document gemaakt waarin je verschillende feiten over honden analyseert. En toen kwam je op het idee dat het beter zou zijn om hetzelfde werk te doen, maar dan met katten. Geen probleem, je kunt het maken van rapporten over katten automatiseren met slechts één commando. Hiervoor hoef je alleen maar je R Markdown-document te parameteriseren.
Dit kan door parameters in de YAML-kop van het opgegeven document in te stellen, en vervolgens de waardeparameters.
— title: "Dieranalyse"
author: "Keith McNulty"
date: "21 maart 2019"
output:
html_document:
code_folding: "verberg"
params:
animal_name:
value: Hond
choices:
— Hond
— Kat
— Konijn
years_of_study:
input: slider
min: 2000
max: 2019
step: 1
round: 1
sep: »
value: [2010, 2017]
—
Nu kun je alle variabelen in de code van het document definiëren als params$animal_name en params$years_of_study. Vervolgens gebruiken we het dropdownmenu Knit (of knit_with_parameters()) en krijgen we de mogelijkheid om parameters te kiezen.

revealjs
revealjs is een pakket dat je in staat stelt om geweldige HTML-presentaties te maken met ingebouwde R-code, intuïtieve navigatie en een slide-menu. HTML-snelkoppelingen maken het mogelijk om snel een geneste structuur van dia's te creëren met verschillende stijlvarianten. Bovendien werkt HTML op elk apparaat, zodat de presentatie op elke telefoon, tablet of laptop kan worden geopend. Het onthullen van informatie kan worden ingesteld door het pakket te installeren en het in de YAML-kop te roepen. Dit is een voorbeeld:
— title: "Exploring the Edge of the People Analytics Universe"
author: "Keith McNulty"
output:
revealjs::revealjs_presentation:
center: ja
template: starwars.html
theme: zwart
date: "HR Analytics Meetup Londen — 18 maart 2019"
resource_files:
— darth.png
— deathstar.png
— hanchewy.png
— millenium.png
— r2d2-threepio.png
— starwars.html
— starwars.png
— stormtrooper.png
—
De broncode van de presentatie , en de <a href="‘>presentatie — hier.

HTML-tags in R Shiny
De meeste programmeurs maken niet optimaal gebruik van de HTML-tags die beschikbaar zijn in R Shiny. En dat zijn er maar liefst 110, die de mogelijkheid bieden om een korte aanroep voor de HTML-functie of media-afspelen te creëren. Onlangs gebruikte ik bijvoorbeeld tags$audio om het "overwinnings"-geluid af te spelen, dat de gebruiker waarschuwde dat de taak was voltooid.
Het praise-pakket
Het gebruik van dit pakket is heel eenvoudig en is bedoeld om de gebruiker te prijzen. Dit lijkt vreemd, maar eigenlijk vindt men dat leuk.

Skillbox raadt aan:
- Praktische tweejarenopleiding .
- Online cursus .
- Praktische jaaropleiding .
Bron: habr.com
