
No R há uma enorme variedade de funções. Abaixo, apresentarei dez delas que são bastante interessantes e das quais muitos podem não estar cientes. Este artigo surgiu após perceber que minhas histórias sobre algumas funcionalidades do R que utilizo no trabalho foram recebidas com entusiasmo por programadores conhecidos. Se você já sabe tudo isso, peço desculpas pelo tempo perdido. Ao mesmo tempo, se tiver algo a compartilhar, por favor, recomende algo útil nos comentários.
A Skillbox recomenda: Curso Prático .
Lembramos: para todos os leitores do «Habr» — desconto de 10.000 rublos na inscrição em qualquer curso Skillbox com o código promocional «Habr».
Função switch
Eu realmente gosto muito do switch(). De fato, é uma forma conveniente de abreviar o operador if ao escolher um valor com base no valor de outra variável. Acho isso especialmente útil quando escrevo código que deve carregar um conjunto específico de dados com base na escolha anterior. Por exemplo, se houver uma variável chamada animal e eu precisar escolher um conjunto de dados específico com base em se o animal é um cachorro, um gato ou um coelho, escreva assim:
data <- read.csv(
switch(animal,
"dog" = "dogdata.csv",
"cat" = "catdata.csv",
"rabbit" = "rabbitdata.csv")
)
Esta capacidade será útil em aplicativos Shiny, onde é necessário carregar diferentes conjuntos de dados ou arquivos de ambiente dependendo de um ou mais itens do menu de entrada.
Atalhos de teclado para RStudio
Esse truque não é tanto para R, mas para o IDE RStudio. No entanto, os atalhos de teclado são sempre muito convenientes, pois economizam tempo na digitação. Meus favoritos são Ctrl+Shift+M para o operador %>% e Alt+- para o operador <-.
Para visualizar todos os atalhos de teclado, basta pressionar Alt+Shift+K no RStudio.
Pacote flexdashboard
Quando você precisa rapidamente lançar um painel Shiny, não há nada melhor do que o pacote dashboard. Ele oferece a capacidade de trabalhar com atalhos HTML, que, por sua vez, permitem criar facilmente barras laterais, linhas e colunas sem complicações. Também existe a opção de usar uma barra de título, que permite posicioná-la em diferentes páginas do aplicativo, incluir ícones, atalhos no Github, endereços de email e muito mais.
O pacote permite trabalhar dentro do Rmarkdown, assim é possível agrupar todos os aplicativos em um único arquivo Rmd, em vez de distribuí-los por diferentes servidores e arquivos de interface, como é feito, por exemplo, usando o shinydashboard. Eu uso o flexdashboard sempre que preciso criar um protótipo simples de painel de controle antes de começar a trabalhar em algo mais complexo. Essa funcionalidade permite criar um protótipo em uma hora.
As funções req e validate no R Shiny
O desenvolvimento em R Shiny pode ser confuso, especialmente quando se recebe constantemente mensagens de erro estranhas que não ajudam a entender o que está acontecendo. Mas com o tempo, o Shiny evolui e se aprimora, e cada vez mais funções surgem para ajudar a descobrir a causa do erro. Por exemplo, req() resolve o problema do erro 'silencioso', quando não é claro qual é a questão. Com ela, é possível exibir elementos da interface do usuário relacionados às ações anteriores. Vamos explicar com um exemplo:
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("Conduzir", input$animal, "análise!")
)
})
validate() verifica tudo antes da renderização e permite exibir uma mensagem de erro — por exemplo, informando que o usuário carregou um arquivo incorreto:
# 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)),
"Coluna Dog Name não encontrada — você carregou o arquivo correto?"
)
data
})
Mais informações sobre todas essas funções .
Armazenamento de credenciais pessoais em variáveis de ambiente do sistema
Se você planeja compartilhar um código que exige a inserção de dados de acesso, use variáveis de ambiente para evitar expor suas credenciais no Github ou em outro serviço. Exemplo de configuração:
Sys.setenv(
DSN = "database_name",
UID = "User ID",
PASS = "Password"
)
Agora, você pode fazer login usando as variáveis de ambiente:
db <- DBI::dbConnect(
drv = odbc::odbc(),
dsn = Sys.getenv("DSN"),
uid = Sys.getenv("UID"),
pwd = Sys.getenv("PASS")
)
Uma abordagem ainda mais conveniente (especialmente se os dados forem usados frequentemente) é defini-los como variáveis de ambiente diretamente no sistema operacional. Nesse caso, estarão sempre disponíveis e você não precisará especificá-los no código.
Automação tidyverse com styler
Limpar o código pode ser facilitado pelo pacote styler, que possui muitas capacidades para formatar automaticamente o código no tidyverse. Tudo o que você precisa fazer é executar styler::style_file() para o seu script problemático. O pacote fará muitas (mas não todas) tarefas para organizar o código.
Parametrização de documentos R Markdown
Então, você criou um excelente documento R Markdown, no qual analisa vários fatos sobre cães. E então lhe ocorre que seria melhor fazer o mesmo trabalho, mas apenas com gatos. Sem problemas, você pode automatizar a criação de relatórios sobre gatos com apenas um comando. Para isso, você só precisa parametrizar seu documento R Markdown.
Isso pode ser feito definindo parâmetros para o cabeçalho YAML no documento especificado e, em seguida, os valores dos parâmetros.
— title: "Análise de Animais"
author: "Keith McNulty"
date: "21 de março de 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]
—
Agora você pode definir todas as variáveis no código do documento como params$animal_name e params$years_of_study. Em seguida, utilize o menu suspenso Knit (ou knit_with_parameters()) para ter a opção de escolher os parâmetros.

revealjs
revealjs é um pacote que permite criar ótimas apresentações em HTML com código R embutido, navegação intuitiva e menu de slides. Os atalhos HTML facilitam a criação rápida de uma estrutura de slides aninhada com diferentes opções de estilo. E o HTML pode ser executado em qualquer dispositivo, então a apresentação pode ser acessada em qualquer telefone, tablet ou laptop. A exibição pode ser configurada instalando o pacote e chamando-o no cabeçalho YAML. Aqui está um exemplo:
— title: "Explorando a Fronteira do Universo de Análise de Pessoas"
author: "Keith McNulty"
output:
revealjs::revealjs_presentation:
center: yes
template: starwars.html
theme: black
date: "HR Analytics Meetup London — 18 de março de 2019"
resource_files:
— darth.png
— deathstar.png
— hanchewy.png
— millenium.png
— r2d2-threepio.png
— starwars.html
— starwars.png
— stormtrooper.png
—
O código-fonte da apresentação , e a própria <a href="">apresentação — aqui.

Tags HTML em R Shiny
A maioria dos programadores não utiliza todas as vantagens das tags HTML disponíveis no R Shiny. São 110 tags que permitem criar chamadas curtas para funções HTML ou reprodução de mídia. Por exemplo, recentemente usei tags$audio para reproduzir um som 'vencedor' que alertava o usuário sobre a conclusão da tarefa.
Pacote praise
Usar este pacote é muito simples, e ele é necessário para elogiar o usuário. Pode parecer estranho, mas na verdade eles gostam disso.

A Skillbox recomenda:
- Curso Prático de Dois Anos .
- Curso online .
- Curso prático de um ano .
Fonte: habr.com
