
В R има огромно разнообразие от функции. По-долу ще изброя десет от най-интересните сред тях, за които много хора може би не знаят. Статията се появи след като забелязах, че моите разкази за някои от възможностите на R, които ползвам в работата си, бяха приети с ентусиазъм от познати програмисти. Ако вече знаете всичко това, моля за извинение за загубеното време. В същото време, ако имате какво да споделите — предлагам нещо полезно в коментарите.
Skillbox препоръчва: Практически курс .
Напомняме: за всички читатели на "Хабра" — отстъпка от 10 000 рубли при записване на всякакъв курс на Skillbox с промокод "Хабр".
Функция switch
Много ми харесва switch(). Всъщност това е удобно съкращение на оператора if за избиране на стойност в съответствие с друга променлива. Намирам го особено полезно, когато пиша код, който трябва да зареди определен набор от данни в зависимост от предишния избор. Например, ако имам променлива с име animal и трябва да избера определен набор данни, в зависимост от това дали животното е куче, котка или заек, пишете така:
data < - read.csv(
switch(animal,
„dog“ = „dogdata.csv“,
„cat“ = „catdata.csv“,
„rabbit“ = „rabbitdata.csv“)
)
Тази възможност ще бъде полезна в Shiny приложения, където е необходимо да се зареждат различни набори данни или файлове в зависимост от едно или повече менюта за въвеждане.
Горещи клавиши за RStudio
Това хак не е толкова за R, колкото за RStudio IDE. Въпреки това, горещите клавиши винаги са много полезни, спестявайки време при въвеждане на текст. Любимите ми са Ctrl+Shift+M за оператора %>% и Alt+- за оператора <-.
За да прегледате всички горещи клавиши, просто натиснете Alt+Shift+K в RStudio.
Пакет flexdashboard
Когато трябва бързо да стартирате Shiny табло, няма нищо по-добро от пакета dashboard. Той предоставя възможност за работа с HTML съкращения, които от своя страна позволяват лесно и безпроблемно създаване на странични ленти, редове и колони. Съществува и възможност за използване на title bar, което позволява да бъде разположен на различни страници на приложението, да оставяте икони, съкращения на Github, имейл адреси и много друго.
Пакет позволява да работите в рамките на Rmarkdown, така че можете да поставяте всички приложения в един Rmd файл, а не да ги разпределяте по различни сървъри и UI файлове, както се прави, например, с shinydashboard. Използвам flexdashboard винаги, когато трябва да създам прост прототип на табло за управление, преди да започна работа по нещо по-сложно. Тази функция позволява да се създаде прототип в рамките на един час.
Функции req и validate в R Shiny
Разработката в R Shiny може да ви обърка, особено когато постоянно получавате странни съобщения за грешки, които не позволяват да разберете какво се случва. Но с времето Shiny се развива и усъвършенства, все повече функции позволяват да се разбере причината за грешките. Така, req() решава проблема с „тихата“ грешка, когато изобщо не е ясно какъв е проблемът. Тя може да визуализира елементи на потребителския интерфейс, свързани с предишни действия. Нека обясним с пример:
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(«Проведете», input$animal, «анализ!»)
)
})
validate() проверява всичко преди рендерирането и дава възможност да се изведе съобщение за грешка — например, че потребителят е качил неправилен файл:
# 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)),
«Намерена е грешка — колоната с името на кучето не е намерена — заредихте ли правилния файл?»
)
data
})
По-подробна информация за всички тези функции .
Съхранение на потребителските данни в системната среда
Ако планирате да споделите код, в който е необходимо да введете данни за достъп, — използвайте системната среда, за да избегнете публикуването на личните си данни в Github или друг сервиз. Пример за поставяне:
Sys.setenv(
DSN = «database_name»,
UID = «User ID»,
PASS = «Password»
)
Сега можете да влезете, използвайки променливите на средата:
db < — DBI::dbConnect(
drv = odbc::odbc(),
dsn = Sys.getenv(«DSN»),
uid = Sys.getenv(«UID»),
pwd = Sys.getenv(«PASS»)
)
Още по-удобно (особено ако данните се използват от вас често) е да ги установите като променливи на средата директно в операционната система. В този случай те ще са достъпни винаги и няма да е необходимо да ги указвате в кода.
Автоматизация на tidyverse със styler
Почистването на кода може да бъде улеснено с пакета styler, който предлага много възможности за автоматично форматиране на стила на кода в tidyverse. Всичко, което трябва да направите, е да стартирате styler::style_file() за вашия проблемен скрипт. Пакетът ще свърши много (но не всичко), за да подреди нещата.
Параметризиране на R Markdown документи
И така, създали сте страхотен документ R Markdown, в който анализирате различни факти за кучета. И тогава ви хрумва, че би било по-добре да направите същата работа, но с котки. Няма проблем, можете да автоматизирате създаването на отчети за котки с помощта на само една команда. За целта само трябва да параметризиране вашия документ R Markdown.
Можете да направите това, като зададете параметри за YAML заглавието в зададения документ и след това - стойностите на параметрите.
— title: «Анализ на животни»
author: «Кийт МакНалти»
date: «21 март 2019»
output:
html_document:
code_folding: «скрий»
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]
—
Сега можете да зададете всички променливи в кода на документа като params$animal_name и params$years_of_study. След това използвайте падащото меню Knit (или knit_with_parameters()), за да получите възможност за избор на параметри.

revealjs
revealjs е пакет, който позволява създаването на отлични HTML презентации с вградени R кодове, интуитивна навигация и меню за слайдове. HTML кратките кодове позволяват бързо създаване на вложена структура на слайдовете с различни стилистични варианти. А HTML ще се стартира на всяко устройство, така че презентацията да може да бъде отворена на всеки телефон, таблет или лаптоп. Можете да настроите разкритията, като инсталирате пакета и го извикате в YAML заглавието. Ето един пример:
— title: «Изследване на границите на анализа на хората»
author: «Кийт МакНалти»
output:
revealjs::revealjs_presentation:
center: yes
template: starwars.html
theme: black
date: «HR Analytics Meetup London — 18 март, 2019»
resource_files:
— darth.png
— deathstar.png
— hanchewy.png
— millenium.png
— r2d2-threepio.png
— starwars.html
— starwars.png
— stormtrooper.png
—
Изходният код на презентацията , а самата <a href=«‘>презентация — тук.

HTML тагове в R Shiny
Повечето програмисти не използват всички предимства на HTML таговете, налични в R Shiny. А те са всъщност 110 тагове, които дават възможност за кратко извикване на HTML функции или възпроизвеждане на медия. Например, неотдавна използвах tags$audio за възпроизвеждане на „победния“ звук, който предупреждаваше потребителя за завършването на задачата.
Пакет praise
Използването на този пакет е много лесно и той служи за даване на похвала на потребителя. Звучи неочаквано, но наистина им харесва.

Skillbox препоръчва:
- Двугодишен практически курс .
- Онлайн курс .
- Практически годишен курс .
Източник: habr.com
