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 dog file, no cats or rabbits
shiny::validate(
need(«Dog Name» %in% colnames(data)),
"Dog Name column not found — гэта наўтбук load the right file?"
)

gegevens
})

Больш падрабязную інфармацыю аб усіх гэтых функцыях можна даведацца тут.

Захоўванне сваіх уліковых дадзеных для сябе ў сістэмным асяроддзі

Калі вы плануеце падзяліцца кодам, дзе патрабуецца ўвесці дадзеныя доступу, – выкарыстоўвайце сістэмнае асяроддзе для таго, каб пазбегнуць размяшчэння ўласных уліковых дадзеных у 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»
output:
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"
output:
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

Дадаць каментар