10 funcții utile R, despre care s-ar putea să nu știți

10 funcții utile R, despre care s-ar putea să nu știți

În R există o mulțime de funcții variate. Mai jos voi prezenta zece dintre cele mai interesante dintre ele, despre care mulți ar putea să nu știe. Articolul a apărut după ce am descoperit că poveștile mele despre unele dintre posibilitățile R, pe care le folosesc în muncă, sunt primite cu entuziasm de cunoscuții programatori. Dacă deja știți totul despre acestea, îmi cer scuze pentru timpul pierdut. În același timp, dacă aveți ceva de împărtășit, vă rog să recomandați ceva util în comentarii.

Skillbox recomandă: Curs practic „Dezvoltator Python”.

Vă reamintim: pentru toți cititorii „Habr” — reducere de 10.000 de ruble la înscrierea la orice curs Skillbox cu codul de promovare „Habr”.

Funcția switch

Îmi place foarte, foarte mult switch(). De fapt, este o scurtare convenabilă a operatorului if atunci când alegi o valoare în funcție de valoarea unei alte variabile. O găsesc deosebit de utilă atunci când scriu cod care trebuie să încarce un anumit set de date în funcție de alegerea anterioară. De exemplu, dacă există o variabilă numită animal și trebuie să aleg un set de date specific în funcție de faptul că animalul este un câine, o pisică sau un iepure, scrieți așa:

data < — read.csv(
switch(animal,
„dog” = „dogdata.csv”,
„cat” = „catdata.csv”,
„rabbit” = „rabbitdata.csv”)
)

Această funcționalitate va fi utilă în aplicațiile Shiny, unde trebuie să încarci diverse seturi de date sau fișiere de mediu în funcție de unul sau mai multe elemente de meniu de introducere.

Comenzile rapide pentru RStudio

Această soluție nu este atât pentru R, cât pentru IDE-ul RStudio. Cu toate acestea, comenzile rapide sunt întotdeauna foarte convenabile, economisind timp în timpul introducerii textului. Preferatele mele sunt Ctrl+Shift+M pentru operatorul %>% și Alt+- pentru operatorul <-.

Pentru a vizualiza toate comenzile rapide, pur și simplu apăsați Alt+Shift+K în RStudio.

Pachetul flexdashboard

Când trebuie să lansezi rapid un tablou de bord Shiny, nu există nimic mai bun decât pachetul dashboard. Acesta oferă posibilitatea de a lucra cu scurtături HTML, care la rândul lor permit crearea ușoară și fără probleme de bare laterale, linii și coloane. Există, de asemenea, opțiunea de a utiliza title bar, ceea ce permite plasarea acestuia pe diferite pagini ale aplicației, lăsând pictograme, scurtături pe Github, adrese de email și multe altele.

Pachetul permite lucrul în cadrul Rmarkdown, astfel încât poți plasa toate aplicațiile într-un singur fișier Rmd, mai degrabă decât să le distribui pe diferite servere și fișiere UI, așa cum se face, de exemplu, cu shinydashboard. Folosesc flexdashboard întotdeauna când trebuie să creez un prototip simplu al unui panou de control înainte de a începe să lucrez la ceva mai complex. Această funcție permite realizarea unui prototip în decurs de o oră.

Funcțiile req și validate în R Shiny

Dezvoltarea în R Shiny poate fi confuză, mai ales când primești constant mesaje de eroare ciudate, care nu îți permit să înțelegi ce se întâmplă. Dar, cu trecerea timpului, Shiny evoluează și se îmbunătățește, tot mai multe funcții apar, care permit identificarea cauzei erorii. Astfel, req() rezolvă problema "eroarei tăcute", când nu este clar ce se întâmplă. Cu aceasta, poți afișa elemente ale interfeței utilizatorului legate de acțiunile anterioare. Să explicăm printr-un exemplu:

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() verifică tot înainte de redare și oferă posibilitatea de a afișa un mesaj de eroare — de exemplu, că utilizatorul a încărcat un fișier greșit:

# 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
})

Informații mai detaliate despre toate aceste funcții pot fi găsite aici.

Stocarea acreditivelor tale în mediu sistemic

Dacă intenționezi să împărtășești codul, unde este necesară introducerea datelor de acces, — folosește mediu sistemic pentru a evita plasarea acreditivelor tale pe Github sau alt serviciu. Exemplu de plasare:

Sys.setenv(
DSN = "database_name",
UID = "User ID",
PASS = "Password"
)

Acum te poți conecta, folosind variabilele de mediu:

db < — DBI::dbConnect(
drv = odbc::odbc(),
dsn = Sys.getenv("DSN"),
uid = Sys.getenv("UID"),
pwd = Sys.getenv("PASS")
)

Chiar mai convenabil (mai ales dacă datele sunt utilizate frecvent) este să le stabilești ca variabile de mediu direct în sistemul de operare. În acest caz, acestea vor fi întotdeauna disponibile și nu va trebui să le specifici în cod.

Automatizare tidyverse cu styler

Curățarea codului poate fi realizată cu ajutorul pachetului styler, care oferă multe opțiuni pentru aplicarea automată a stilului de cod în tidyverse. Tot ce trebuie să faceți este să rulați styler::style_file() pentru scriptul vostru problematic. Pachetul va face foarte multe (dar nu tot) pentru a organiza lucrurile.

Parametrizarea documentelor R Markdown

Așadar, ați creat un document excelent R Markdown, în care analizați diverse informații despre câini. Apoi, vă vine în minte că ar fi mai bine să faceți aceeași muncă, dar doar cu pisici. Nicio problemă, puteți automatiza crearea rapoartelor despre pisici cu ajutorul unei singure comenzi. Trebuie doar să parametrizați documentul vostru R Markdown.

Acest lucru se poate face prin definirea parametrilor pentru antetul YAML din documentul specificat și apoi prin setarea parametrilor de valoare.

— title: „Analiza Animalelor”
author: „Keith McNulty”
date: „21 Martie 2019”
output:
html_document:
code_folding: „hide”
params:
animal_name:
value: Dog
choices:
— Dog
— Cat
— Rabbit
years_of_study:
input: slider
min: 2000
max: 2019
step: 1
round: 1
sep: »
value: [2010, 2017]
—

Acum puteți scrie toate variabilele în codul documentului ca params$animal_name și params$years_of_study. Apoi, folosim meniul drop-down Knit (sau knit_with_parameters()) și obținem posibilitatea de a selecta parametrii.

10 funcții utile R, despre care s-ar putea să nu știți

revealjs

revealjs este un pachet care permite crearea unor prezentări HTML excelente cu cod R încorporat, navigare intuitivă și meniu de slide-uri. Scenariile HTML permit crearea rapidă a unei structuri stratificate de slide-uri cu diferite variante de stiluri. Iar HTML-ul va rula pe orice dispozitiv, așa că prezentarea poate fi deschisă pe fiecare telefon, tabletă sau laptop. Dezvăluirea informațiilor poate fi configurată instalând pachetul și apelându-l în antetul YAML. Iată un exemplu:

— title: „Explorarea Marginii Universului Analitic al Oamenilor”
author: „Keith McNulty”
output:
revealjs::revealjs_presentation:
center: yes
template: starwars.html
theme: black
date: „Întâlnirea de Analiză HR, Londra - 18 Martie 2019”
resource_files:
— darth.png
— deathstar.png
— hanchewy.png
— millenium.png
— r2d2-threepio.png
— starwars.html
— starwars.png
— stormtrooper.png
—

Codul sursă al prezentării este disponibil aici, iar acesta <a href=„rpubs.com/keithmcnulty/hr_meetup_london‘>prezentarea - aici.

10 funcții utile R, despre care s-ar putea să nu știți

Etichetele HTML în R Shiny

Cei mai mulți programatori nu folosesc toate avantajele etichetelor HTML disponibile în R Shiny. Acestea sunt doar 110 etichete, care permit crearea unui apel scurt pentru funcția HTML sau redarea media. De exemplu, recent am folosit tags$audio pentru a reda sunetul „câștigător”, care avertiza utilizatorul despre finalizarea sarcinii.

Pachetul praise

Utilizarea acestui pachet este foarte simplă și este necesar pentru a oferi laudă utilizatorului. Poate părea ciudat, dar de fapt le place așa ceva.

10 funcții utile R, despre care s-ar putea să nu știți

Skillbox recomandă:

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster