10 características útiles de R que podrías no conocer

10 características útiles de R que podrías no conocer

R está repleto de funciones diversas. A continuación, enumeraré diez de las más interesantes, que muchos podrían no conocer. Este artículo surgió después de que me di cuenta de que mis relatos sobre algunas capacidades de R, que utilizo en mi trabajo, son recibidos con entusiasmo por programadores conocidos. Si ya conoces todo esto, te pido disculpas por el tiempo perdido. Al mismo tiempo, si tienes algo que compartir, ¡comenta algo útil!

Skillbox recomienda: Curso práctico «Desarrollador de Python».

Recordamos: para todos los lectores de «Habr» — un descuento de 10,000 rublos al registrarse en cualquier curso de Skillbox usando el código promocional «Habr».

Función switch

Me gusta mucho, mucho switch(). De hecho, es una abreviatura conveniente del operador if cuando se elige un valor según el valor de otra variable. Encuentro esto especialmente útil cuando escribo código que debe cargar un conjunto específico de datos según la elección anterior. Por ejemplo, si hay una variable llamada animal y se debe elegir un conjunto de datos específico dependiendo de si el animal es un perro, un gato o un conejo, escribiría así:

data <- read.csv(
switch(animal,
«dog» = «dogdata.csv»,
«cat» = «catdata.csv»,
«rabbit» = «rabbitdata.csv»)
)

Esta funcionalidad será útil en aplicaciones Shiny, donde se necesitan cargar diferentes conjuntos de datos o archivos de entorno según uno o varios menús de entrada.

Atajos de teclado para RStudio

Este truco no es tanto para R como para la IDE de RStudio. Sin embargo, los atajos de teclado siempre son muy útiles, ahorrando tiempo al ingresar texto. Mis favoritos son Ctrl+Shift+M para el operador %>% y Alt+- para el operador <-.

Para ver todos los atajos de teclado, simplemente presiona Alt+Shift+K en RStudio.

Paquete flexdashboard

Cuando se necesita lanzar rápidamente un panel de control Shiny, no hay nada mejor que el paquete dashboard. Proporciona la capacidad de trabajar con atajos HTML, que a su vez permiten crear fácilmente y sin problemas barras laterales, filas y columnas. También hay una opción para usar la barra de título, que permite colocarla en diferentes páginas de la aplicación, dejar íconos, atajos en Github, direcciones de correo electrónico y mucho más.

El paquete permite trabajar dentro de Rmarkdown, así que se pueden alojar todas las aplicaciones en un solo archivo Rmd, en lugar de distribuirlas en diferentes servidores y archivos UI, como se hace, por ejemplo, con shinydashboard. Siempre utilizo flexdashboard cuando necesito crear un prototipo simple de un panel de control antes de comenzar a trabajar en algo complejo. Esta función permite crear un prototipo en menos de una hora.

Funciones req y validate en R Shiny

Desarrollar en R Shiny puede ser confuso, especialmente cuando recibes constantemente mensajes de error extraños que no permiten entender lo que está sucediendo. Pero con el tiempo, Shiny evoluciona y perfecciona, surgen cada vez más funciones que permiten averiguar la causa del error. Así, req() resuelve el problema del "error silencioso", donde no se entiende en absoluto cuál es el problema. Con esto, se pueden mostrar los elementos de la interfaz de usuario relacionados con acciones anteriores. Vamos a explicar con un ejemplo:

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() verifica todo antes de renderizar y da la posibilidad de mostrar un mensaje de error — por ejemplo, que el usuario subió un archivo incorrecto:

# 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)),
"Dog Name column not found — did you load the right file?"
)

data
})

Más información sobre todas estas funciones puedes encontrar aquí.

Almacenar tus credenciales en el entorno del sistema

Si planeas compartir tu código, donde se requiere introducir datos de acceso, utiliza el entorno del sistema para evitar publicar tus credenciales en Github o en otro servicio. Ejemplo de almacenamiento:

Sys.setenv(
DSN = "database_name",
UID = "User ID",
PASS = "Password"
)

Ahora se puede iniciar sesión usando las variables de entorno:

db < — DBI::dbConnect(
drv = odbc::odbc(),
dsn = Sys.getenv("DSN"),
uid = Sys.getenv("UID"),
pwd = Sys.getenv("PASS")
)

Es aún más conveniente (especialmente si usas los datos con frecuencia) establecerlos como variables de entorno directamente en el sistema operativo. En este caso, estarán disponibles siempre y no tendrás que especificarlos en el código.

Automatización de tidyverse con styler

Limpiar el código puede ser facilitado por el paquete styler, que tiene muchas opciones para formatear automáticamente el estilo del código en tidyverse. Todo lo que necesitas hacer es ejecutar styler::style_file() en tu script problemático. El paquete hará mucho (pero no todo) para organizar las cosas.

Parametrización de documentos R Markdown

Así que has creado un excelente documento R Markdown en el que analizas varios datos sobre perros. Entonces te das cuenta de que sería mejor hacer el mismo trabajo, pero solo con gatos. No hay problema, puedes automatizar la creación de informes sobre gatos con solo un comando. Solo necesitas parametrizar tu documento R Markdown.

Puedes hacer esto estableciendo parámetros para el encabezado YAML en el documento especificado, y luego los parámetros de valor.

— title: «Análisis de Animales»
author: «Keith McNulty»
date: «21 de marzo de 2019»
output:
html_document:
code_folding: «ocultar»
params:
animal_name:
value: Perro
choices:
— Perro
— Gato
— Conejo
years_of_study:
input: slider
min: 2000
max: 2019
step: 1
round: 1
sep: »
value: [2010, 2017]
—

Ahora puedes escribir todas las variables en el código del documento como params$animal_name y params$years_of_study. Luego, usa el menú desplegable Knit (o knit_with_parameters()) y tendrás la opción de elegir parámetros.

10 características útiles de R que podrías no conocer

revealjs

revealjs es un paquete que permite crear excelentes presentaciones HTML con código R incorporado, navegación intuitiva y un menú de diapositivas. Los atajos HTML permiten crear rápidamente una estructura anidada de diapositivas con diferentes estilos. Y HTML se ejecutará en cualquier dispositivo, así que la presentación podrá abrirse en cualquier teléfono, tableta o computadora portátil. La revelación de información se puede configurar instalando el paquete y llamándolo en la cabecera YAML. Aquí tienes un ejemplo:

— title: «Explorando el Límite del Universo de Análisis de Personas»
author: «Keith McNulty»
output:
revealjs::revealjs_presentation:
center: sí
template: starwars.html
theme: negro
date: «Encuentro de Análisis de RRHH Londres — 18 de marzo, 2019»
resource_files:
— darth.png
— deathstar.png
— hanchewy.png
— millenium.png
— r2d2-threepio.png
— starwars.html
— starwars.png
— stormtrooper.png
—

El código fuente de la presentación se encuentra aquí, y la misma <a href=«rpubs.com/keithmcnulty/hr_meetup_london‘>presentación — aquí.

10 características útiles de R que podrías no conocer

Etiquetas HTML en R Shiny

La mayoría de los programadores no aprovechan todas las ventajas de las etiquetas HTML que están disponibles en R Shiny. Hay un total de 110 etiquetas que permiten crear una llamada corta para funciones HTML o reproducción de medios. Por ejemplo, recientemente utilicé tags$audio para reproducir un sonido 'victorioso' que alertaba al usuario sobre la finalización de una tarea.

Paquete praise

Usar este paquete es muy sencillo, y está diseñado para elogiar al usuario. Puede parecer extraño, pero a ellos realmente les gusta.

10 características útiles de R que podrías no conocer

Skillbox recomienda:

Fuente: habr.com

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster