10 корисних фіч R, про які ви могли не знати

10 корисних фіч R, про які ви могли не знати

У R повно-повнісінько різних функцій. Нижче я наведу десять найцікавіших із них, про які багато хто міг не знати. Стаття з'явилася після того, як я виявив, що мої розповіді про деякі можливості R, які я використовую в роботі, захоплено сприймаються знайомими програмістами. Якщо ви і так знаєте про це все, то перепрошую за витрачений час. У той же час, якщо є чимось поділитися — порадьте щось корисне в коментарях.

Skillbox рекомендує: Практичний курс «Python-розробник».

Нагадуємо: для всіх читачів "Хабра" - знижка 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, адреси email та багато іншого.

Пакет дозволяє працювати в рамках 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("Conduct", input$animal, "analysis!")
)
})

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, no cats or rabbits
shiny::validate(
need(«Dog Name» %in% colnames(data)),
"Dog Name column not found - did you load the right file?"
)

дані
})

Більш детальну інформацію про всі ці функції можна дізнатися тут.

Зберігання своїх облікових даних для себе у системному оточенні

Якщо ви плануєте поділитися кодом, де потрібно ввести дані доступу, використовуйте системне оточення для того, щоб уникнути розміщення власних облікових даних у 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: "Animal Analysis"
author: "Keith McNulty"
date: «21 March 2019»
вихід:
html_document:
code_folding: "hide"
параметри:
animal_name:
value: Dog
вибір:
- Dog
- Cat
- Rabbit
years_of_study:
input: slider
хв: 2000
максимум: 2019
крок 1
round: 1
sep: »
value: [2010, 2017]

Тепер можна прописати всі змінні в коді документа як params$animal_name та params$years_of_study. Потім скористаємося меню Knit (або knit_with_parameters()) і отримаємо можливість вибирати параметри.

10 корисних фіч R, про які ви могли не знати

revealjs

revealjs - пакет, що дає можливість створювати відмінні HTML-презентації з вбудованим R-кодом, інтуїтивною навігацією та слайд-меню. HTML-ярлики дозволяють швидко створювати вкладену структуру слайдів із різними варіантами стилів. Ну а HTML запуститься на будь-якому пристрої, тому презентацію зможуть відкрити на кожному телефоні, планшеті або ноутбуці. Розкриття інформації можна налаштувати, встановивши пакет та викликавши його в YAML-заголовку. Ось приклад:

- title: "Exporing the Edge of the People Analytics Universe"
author: "Keith McNulty"
вихід:
revealjs::revealjs_presentation:
center: yes
template: starwars.html
theme: black
date: "HR Analytics Meetup London - 18 March, 2019"
resource_files:
- darth.png
- deathstar.png
- Hanchewy.png
- millenium.png
- r2d2-threepio.png
- Starwars.html
- Starwars.png
- stormtrooper.png
-

Початковий код презентації розміщений тут, а самаrpubs.com/keithmcnulty/hr_meetup_london'>презентація - тут.

10 корисних фіч R, про які ви могли не знати

HTML-теги у R Shiny

Більшість програмістів не використовують усі переваги HTML-тегів, які є у R Shiny. А це всього 110 тегів, які дають можливість створити короткий виклик для HTML-функції або відтворення медіа. Наприклад, нещодавно я застосував tags$audio для відтворення переможного звуку, який попереджав користувача про завершення виконання завдання.

Пакет praise

Використовувати цей пакет дуже просто, а потрібний він для виведення похвали користувачеві. Це здається дивним, але насправді їм це подобається.

10 корисних фіч R, про які ви могли не знати

Skillbox рекомендує:

Джерело: habr.com

Додати коментар або відгук