10 Handige R-functies die u misschien nog niet kent

10 Handige R-functies die u misschien nog niet kent

R zit vol met verschillende functies. Hieronder zal ik tien van de meest interessante daarvan geven, waarvan velen misschien nog niet op de hoogte zijn. Het artikel verscheen nadat ik ontdekte dat mijn verhalen over enkele features van R die ik in mijn werk gebruik enthousiast werden ontvangen door collega-programmeurs. Als je hier al alles over weet, bied ik mijn excuses aan voor het verspillen van je tijd. Als u iets te delen heeft, kunt u in de reacties iets nuttigs aanbevelen.

Skillbox beveelt aan: Praktische cursus "Python-ontwikkelaar".

Herinnering: voor alle lezers van "Habr" - een korting van 10 roebel bij inschrijving voor een Skillbox-cursus met behulp van de promotiecode "Habr".

schakelfunctie

Ik hou echt heel erg van switch(). In feite is het een handige afkorting voor een if-instructie bij het selecteren van een waarde op basis van de waarde van een andere variabele. Ik vind dit vooral handig als ik code schrijf die een specifieke set gegevens moet laden op basis van een eerdere selectie. Als u bijvoorbeeld een variabele met de naam dier heeft en u een specifieke set gegevens wilt selecteren, afhankelijk van of het dier een hond, een kat of een konijn is, schrijft u dit:

gegevens < — lees.csv(
schakelaar(dier,
"hond" = "dogdata.csv",
"cat" = "catdata.csv",
"konijn" = "rabbitdata.csv")
)

Deze functie is handig in Shiny-toepassingen waarbij u verschillende datasets of omgevingsbestanden moet laden, afhankelijk van een of meer invoermenu-items.

Sneltoetsen voor RStudio

Deze hack is niet zozeer voor R, maar voor RStudio IDE. Sneltoetsen zijn echter altijd erg handig, waardoor u tijd kunt besparen bij het invoeren van tekst. Mijn favorieten zijn Ctrl+Shift+M voor de %>% operator en Alt+- voor de <- operator.

Om alle sneltoetsen te bekijken, drukt u eenvoudigweg op Alt+Shift+K in RStudio.

flexdashboard-pakket

Wanneer u snel uw Shiny-dashboard moet starten, is er niets beter dan het dashboardpakket. Het biedt de mogelijkheid om met HTML-snelkoppelingen te werken, waardoor u eenvoudig en probleemloos zijbalken, rijen en kolommen kunt maken. Er is ook de mogelijkheid om een ​​titelbalk te gebruiken, waarmee u deze op verschillende pagina's van de applicatie kunt plaatsen, pictogrammen, snelkoppelingen op Github, e-mailadressen en nog veel meer kunt achterlaten.

Met het pakket kunt u binnen het raamwerk van Rmarkdown werken, zodat u alle applicaties in één Rmd-bestand kunt plaatsen en ze niet over verschillende servers en UI-bestanden kunt distribueren, zoals bijvoorbeeld gebeurt met behulp van Shinydashboard. Ik gebruik flexdashboard wanneer ik een eenvoudig dashboardprototype moet maken voordat ik aan iets complexs ga werken. Met deze functie kunt u binnen een uur een prototype maken.

req en valideer functies in R Shiny

Ontwikkelen in R Shiny kan verwarrend zijn, vooral als je steeds vreemde foutmeldingen krijgt die het moeilijk maken om te begrijpen wat er aan de hand is. Maar na verloop van tijd ontwikkelt en verbetert Shiny zich, er verschijnen hier steeds meer functies waarmee u de oorzaak van de fout kunt begrijpen. Req() lost het probleem dus op met een “stille” fout, terwijl het over het algemeen niet duidelijk is wat er aan de hand is. Hiermee kunt u UI-elementen weergeven die verband houden met eerdere acties. Laten we het uitleggen met een voorbeeld:

output$go_button < — glanzend::renderUI({

# knop alleen weergeven als er een dierinvoer is gekozen

glanzend::req(input$dier)

# weergaveknop

glanzend::actionButton("go",
paste("Gedrag", input$animal, "analyse!")
)
})

validate() controleert alles voordat het wordt weergegeven en geeft u de mogelijkheid om een ​​foutmelding af te drukken, bijvoorbeeld dat de gebruiker het verkeerde bestand heeft geüpload:

# csv-invoerbestand ophalen

inBestand < — invoer$bestand1
data < — inFile$datapath

# render tabel alleen als het honden zijn

glanzend::renderTable({
# controleer of het om het hondenbestand gaat, en niet om katten of konijnen
glanzend::validate(
need("Hondnaam" %in% colnames(data)),
“Hondnaamkolom niet gevonden – heeft u het juiste bestand geladen?”
)

gegevens
})

Meer informatie over al deze functies vind je hier.

Uw inloggegevens voor uzelf opslaan in de systeemomgeving

Als u van plan bent code te delen waarvoor u inloggegevens moet invoeren, gebruik dan de systeemomgeving om te voorkomen dat u uw eigen inloggegevens op Github of een andere service host. Voorbeeld plaatsing:

Sys.setenv(
DSN = "databasenaam",
UID = "Gebruikers-ID",
PASS = "Wachtwoord"
)

Nu kunt u inloggen met 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 u de gegevens vaak gebruikt) om ze rechtstreeks in het besturingssysteem als omgevingsvariabelen in te stellen. In dit geval zijn ze altijd beschikbaar en hoeft u ze niet in de code op te geven.

Automatiseer opruimen met styler

Het styler-pakket kan u helpen uw code op te schonen; het heeft veel opties om de codestijl automatisch in ridicverse te brengen. Het enige wat u hoeft te doen is styler::style_file() uit te voeren op uw problematische script. Het pakket zal veel (maar niet alles) doen om de orde te herstellen.

R Markdown-documenten parametreren

U hebt dus een geweldig R Markdown-document gemaakt waarin u verschillende feiten over honden analyseert. En dan komt het bij je op dat het beter zou zijn om hetzelfde werk te doen, maar dan alleen met katten. Geen probleem, u kunt het maken van kattenrapporten automatiseren met slechts één commando. Om dit te doen, hoeft u alleen uw R-markdown-document te parametriseren.

U kunt dit doen door parameters in te stellen voor de YAML-header in het opgegeven document en vervolgens de waardeparameters in te stellen.

— titel: “Dieranalyse”
auteur: "Keith McNulty"
datum: "21 maart 2019"
output:
html_document:
code_folding: "verbergen"
parameters:
dier_naam:
waarde: Hond
keuzes:
- Hond
- Kat
- Konijn
jaren_van_studie:
invoer: schuifregelaar
minuut: 2000
maximum: 2019
stap 1
ronde 1
september: "
waarde: [2010, 2017] —

Nu kunt u alle variabelen in de documentcode registreren als params$dier_naam en params$years_of_study. Vervolgens gebruiken we het vervolgkeuzemenu Knit (of Knit_with_parameters()) en kunnen we parameters selecteren.

10 Handige R-functies die u misschien nog niet kent

onthullenjs

revealjs is een pakket waarmee u geweldige HTML-presentaties kunt maken met ingebouwde R-code, intuïtieve navigatie en schuifmenu's. Met HTML-snelkoppelingen kunt u snel een geneste diastructuur maken met verschillende stijlopties. Welnu, HTML werkt op elk apparaat, dus de presentatie kan op elke telefoon, tablet of laptop worden geopend. Het vrijgeven van informatie kan worden geconfigureerd door het pakket te installeren en aan te roepen in de YAML-header. Hier is een voorbeeld:

— titel: “De grenzen van het People Analytics-universum verkennen”
auteur: "Keith McNulty"
output:
revealjs::revealjs_presentatie:
centrum: ja
sjabloon: starwars.html
thema: zwart
datum: “HR Analytics Meetup Londen – 18 maart 2019”
resource_bestanden:
— darth.png
- deathstar.png
- hanchewy.png
- millennium.png
- r2d2-threepio.png
-starwars.html
—starwars.png
—stormtrooper.png
-

Broncode van presentatie hier gepost, en zijzelfrpubs.com/keithmcnulty/hr_meetup_london'>presentatie - hier.

10 Handige R-functies die u misschien nog niet kent

HTML-tags in R Shiny

De meeste programmeurs maken niet optimaal gebruik van de HTML-tags die R Shiny heeft. Maar dit zijn slechts 110 tags, die het mogelijk maken om een ​​korte oproep te maken voor een HTML-functie of het afspelen van media. Ik heb bijvoorbeeld onlangs tags$audio gebruikt om een ​​'overwinning'-geluid af te spelen dat de gebruiker waarschuwde wanneer een taak was voltooid.

Lofpakket

Het gebruik van dit pakket is heel eenvoudig, maar het is nodig om de gebruiker te prijzen. Het lijkt vreemd, maar ze vinden het eigenlijk leuk.

10 Handige R-functies die u misschien nog niet kent

Skillbox beveelt aan:

Bron: www.habr.com

Voeg een reactie