
W R jest pełno różnych funkcji. Poniżej przedstawię dziesięć z nich, które mogą być interesujące dla wielu osób, a o których mogli nie wiedzieć. Artykuł powstał, ponieważ zauważyłem, że moje opowieści o niektórych funkcjonalnościach R, które wykorzystuję w pracy, są entuzjastycznie przyjmowane przez znajomych programistów. Jeśli już wszystko o tym wiesz, to przepraszam za stratę czasu. Z drugiej strony, jeśli masz coś do dodania — podziel się swoimi cennymi wskazówkami w komentarzach.
Skillbox poleca: Praktyczny kurs .
Przypominamy: dla wszystkich czytelników „Habra” — zniżka 10 000 rubli przy zapisie na dowolny kurs Skillbox z kodem promocyjnym „Habra”.
Funkcja switch
Bardzo, bardzo lubię switch(). To w rzeczywistości wygodne skrócenie operatora if do wyboru wartości na podstawie innej zmiennej. Uważam, że jest to szczególnie przydatne, gdy piszę kod, który ma za zadanie załadować określony zestaw danych w zależności od wcześniejszego wyboru. Na przykład, jeśli mamy zmienną o nazwie animal i musimy wybrać określony zestaw danych w zależności od tego, czy zwierzę to pies, kot czy królik, piszemy tak:
data <- read.csv(
switch(animal,
"dog" = "dogdata.csv",
"cat" = "catdata.csv",
"rabbit" = "rabbitdata.csv")
)
Ta funkcjonalność będzie przydatna w aplikacjach Shiny, gdzie trzeba załadować różne zestawy danych lub pliki środowiska w zależności od jednego lub kilku wpisów w menu.
Skróty klawiszowe dla RStudio
Ten trik nie dotyczy tylko R, ale także IDE RStudio. Niemniej jednak skróty klawiszowe są zawsze bardzo przydatne, oszczędzają czas przy wprowadzaniu tekstu. Moimi ulubionymi są Ctrl+Shift+M dla operatora %>% oraz Alt+- dla operatora <-.
Aby zobaczyć wszystkie skróty klawiszowe, wystarczy nacisnąć Alt+Shift+K w RStudio.
Pakiet flexdashboard
Kiedy trzeba szybko uruchomić panel sterowania Shiny, nic nie jest lepsze niż pakiet dashboard. Umożliwia on pracę z skrótami HTML, które z kolei umożliwiają łatwe i bezproblemowe tworzenie pasków bocznych, wierszy i kolumn. Jest również możliwość korzystania z title bar, co pozwala na umieszczanie go na różnych stronach aplikacji, pozostawianie ikon, skrótów na Github, adresów e-mail i wiele więcej.
Pakiet umożliwia pracę w ramach Rmarkdown, dzięki czemu można umieszczać wszystkie aplikacje w jednym pliku Rmd, zamiast rozdzielać je po różnych serwerach i plikach UI, jak to się robi na przykład za pomocą shinydashboard. Zawsze używam flexdashboard, gdy muszę stworzyć prosty prototyp panelu sterowania, zanim zacznę pracować nad czymś bardziej skomplikowanym. Ta funkcjonalność umożliwia stworzenie prototypu w ciągu godziny.
Funkcje req i validate w R Shiny
Programowanie w R Shiny może być zagmatwane, zwłaszcza gdy ciągle otrzymujesz dziwne komunikaty o błędach, które zupełnie nie pozwalają zrozumieć, co się dzieje. Jednak z czasem Shiny rozwija się i udoskonala, pojawia się coraz więcej funkcji, które pomagają zrozumieć przyczyny błędów. Tak, req() rozwiązuje problem z „cichymi” błędami, gdy całkowicie nie wiadomo, o co chodzi. Dzięki niej można wyświetlić elementy interfejsu użytkownika związane z wcześniejszymi działaniami. Wyjaśnimy na przykładzie:
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("Przeprowadź", input$animal, "analizę!")
)
})
validate() sprawdza wszystko przed renderowaniem i umożliwia wyświetlenie komunikatu o błędzie — na przykład, że użytkownik załadował niewłaściwy plik:
# 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)),
"Kolumna Dog Name nie znaleziona — czy załadowałeś właściwy plik?"
)
data
})
Bardziej szczegółowe informacje o wszystkich tych funkcjach .
Przechowywanie swoich danych logowania w zmiennych środowiskowych
Jeśli planujesz podzielić się kodem, w którym wymagane są dane dostępu, — użyj zmiennych środowiskowych, aby uniknąć umieszczania swoich danych logowania w Githubie lub innym serwisie. Przykład umieszczenia:
Sys.setenv(
DSN = "nazwa_bazy_danych",
UID = "ID_Użytkownika",
PASS = "Hasło"
)
Teraz można logować się, używając zmiennych środowiskowych:
db <- DBI::dbConnect(
drv = odbc::odbc(),
dsn = Sys.getenv("DSN"),
uid = Sys.getenv("UID"),
pwd = Sys.getenv("PASS")
)
Jeszcze wygodniej (szczególnie jeśli dane są często używane) jest ustawić je jako zmienne środowiskowe bezpośrednio w systemie operacyjnym. W takim przypadku będą dostępne zawsze i nie będzie trzeba podawać ich w kodzie.
Automatyzacja tidyverse za pomocą stylera
Czyszczenie kodu może pomóc pakiet styler, który ma wiele możliwości automatycznej konwersji stylu kodu w tidyverse. Wystarczy uruchomić styler::style_file() dla problemowego skryptu. Pakiet zrobi bardzo wiele (ale nie wszystko), aby uporządkować kod.
Parametryzacja dokumentów R Markdown
Stworzyłeś świetny dokument R Markdown, w którym analizujesz różne fakty o psach. A potem przychodzi ci do głowy, że lepiej byłoby przeprowadzić tę samą pracę, ale z kotami. To żaden problem, można zautomatyzować tworzenie raportów o kotach za pomocą tylko jednej komendy. Wystarczy parametryzować swój dokument R Markdown.
Można to zrobić, definiując parametry dla nagłówka YAML w danym dokumencie, a następnie — wartości tych parametrów.
— title: "Analiza Zwierząt"
author: "Keith McNulty"
date: "21 marca 2019"
output:
html_document:
code_folding: "ukryj"
params:
animal_name:
value: Pies
choices:
— Pies
— Kot
— Królik
years_of_study:
input: suwak
min: 2000
max: 2019
step: 1
round: 1
sep: »
value: [2010, 2017]
—
Teraz można podać wszystkie zmienne w kodzie dokumentu jako params$animal_name i params$years_of_study. Następnie skorzystaj z rozwijanego menu Knit (lub knit_with_parameters()), aby uzyskać możliwość wyboru parametrów.

revealjs
revealjs to pakiet, który umożliwia tworzenie świetnych prezentacji HTML z wbudowanym kodem R, intuicyjną nawigacją i menu slajdów. Skróty HTML pozwalają szybko tworzyć zagnieżdżoną strukturę slajdów z różnymi opcjami stylów. A HTML uruchomi się na każdym urządzeniu, więc prezentację można otworzyć na każdym telefonie, tablecie lub laptopie. Możliwości odkrywania informacji można skonfigurować, instalując pakiet i wywołując go w nagłówku YAML. Oto przykład:
— title: "Eksplorując Skrajne Obrzeża Uniwersum Analiz Ludzi"
author: "Keith McNulty"
output:
revealjs::revealjs_presentation:
center: tak
template: starwars.html
theme: czarny
date: "HR Analytics Meetup Londyn — 18 marca 2019"
resource_files:
— darth.png
— deathstar.png
— hanchewy.png
— millenium.png
— r2d2-threepio.png
— starwars.html
— starwars.png
— stormtrooper.png
—
Kod źródłowy prezentacji , a sama <a href="'>prezentacja — tutaj.

Tagi HTML w R Shiny
Większość programistów nie wykorzystuje wszystkich zalet tagów HTML, które są dostępne w R Shiny. A jest ich zaledwie 110, które pozwalają na stworzenie krótkiego wywołania dla funkcji HTML lub odtwarzania mediów. Na przykład niedawno zastosowałem tags$audio do odtwarzania "zwycięskiego" dźwięku, który ostrzegał użytkownika o zakończeniu zadania.
Pakiet praise
Używanie tego pakietu jest bardzo proste, a jego celem jest wyrażenie uznania dla użytkownika. Może to wydawać się dziwne, ale w rzeczywistości to im się podoba.

Skillbox poleca:
- Dwuletni praktyczny kurs .
- Kurs online .
- Praktyczny roczny kurs .
Źródło: habr.com
