/
Intérprete de R para Apache Zeppelin

Intérprete de R para Apache Zeppelin

Introducción

R es un entorno de código abierto para realizar cálculo estadístico y generar gráficos.

Los Notebooks de Onesait Platform incorporan el intérprete de R por defecto, por lo que no es necesario instalar nada previamente, teniendo que indicar únicamente el tipo de intérprete a utilizar, pues se soportan tres:

  • %r.r: intérprete básico de R, con el menor número de dependencias. Si se usa únicamente %r, se hará uso del intérprete de %spark.r si se encuentra cargado.

  • %r.ir: proporciona una ejecución de R más sofisticada a través de IRKernel, con una experiencia de uso similar a la de utilizar R en Jupyter.

  • %r.shiny: permite ejecutar aplicaciones Shiny.

A continuación se muestran algunos ejemplos de cómo utilizar R para calcular y representar resultados.

Ejemplos de uso

Hola mundo

El primer ejemplo consiste en mostrar en la ventana de resultados unas cuantas variables de diferentes tipos. Para ello, en un párrafo, se escribirá el siguiente código:

%r.r foo <- TRUE print(foo) bare <- c(1, 2.5, 4) print(bare) double <- 15.0 print(double)

Al ejecutar el párrafo, se mostrará el resultado.

image-20250207-105124.png

Mostrar datos tabulados

Existe la posibilidad de mostrar la información de forma tabulada, lo que permite visualizar mejor los datos.

Para ello, es necesario ampliar las capacidades del intérprete, cargando paquetes en la sesión actual. Los paquetes son colecciones de funciones, datos y documentación que extiende las capacidades de R. Estos paquetes se cargan (que no instalan) mediante library(paquete).

Así, para cargar las tablas, se usará el siguiente código:

%r library(data.table)

Un ejemplo de cómo mostrar una tabla de dos columnas, con sus cabeceras, sería el siguiente:

%r library(data.table) dt <- data.table(Number=1:3, Value=4:6) print(dt)

El resultado tras ejecutar el párrafo mostraría:

image-20250207-123119.png

Mostrar series de números

Con R, se pueden realizar todo tipo de cálculos matemáticos. Uno sencillo es el de mostrar series de números calculados dinámicamente, o rangos.

Tomando el siguiente ejemplo:

%r for (i in 1:5) { print(i*2) } print(1:50)

En este caso, al ejecutar el párrafo se obtendrá el siguiente resultado:

image-20250207-123416.png

Cargar e interactuar con datasets

Es posible cargar conjuntos de datos para interactuar con ellos. Se tomará por ejemplo el conjunto «iris», conjunto que viene integrado con R, y que contiene información sobre especies de flores iris.

Para visualizar la cabecera de los datos del dataset, se ejecutará el siguiente código:

%r colnames(iris)

Tras ejecutarlo, se mostrarán los campos que conforman la cabecera:

image-20250207-124956.png

Además de la cabecera, se pueden cargar campos y visualizar su valor.

%r colnames(iris) iris$Petal.Length iris$Sepal.Length

El resultado mostraría los valores de los campos «Petal» y «Sepal»:

image-20250207-125508.png

Formatear la salida

Ya se ha visto cómo tabular los datos, pero es posible formatear la salida para hacerla más visual, y de paso añadir opciones de gestión de las columnas.

Para ello se hará uso del operador cat. Así, para mostrar una tabla de dos columnas con dos registros, se usaría este código:

%r.ir cat("%table name\tsize\nsmall\t100\nlarge\t1000")

El resultado se vería de esta forma:

image-20250207-131407.png

Se ha utilizado %r.ir en vez de %r / %r.r para mejorar la visualización de los campos de la cabecera de la tabla.

Ejecutar código HTML

Es posible también introducir código HTML y renderizarlo en el párrafo, usando nuevamente el operador cat. Además, es posible utilizar lógica para los datos a mostrar.

En el siguiente ejemplo se puede ver cómo se añaden etiquetas de título «H», así como textos con propiedades CSS, uso de iconos de fuentes de clases CSS, todo ello mezclado con la lógica de R:

%r cat("%html <h3>¡Dile hola a HTML!</h3>") cat("<font color='blue'><span class='fa fa-bars'> Texto de color azul</font></span>") for (i in 1:10) { cat(paste0("<h4>", i, " * 2 <b>=</b> ", i*2, "</h4>")) }

El resultado será el siguiente:

image-20250207-132754.png

Visualización de gráficas

También existen diferentes formas de representar datos de forma gráfica. Una de ellas es usando el Google Charts API (googleVis).

Algunos ejemplos serían:

Gráfica de barras

Definiendo un DataFrame con los valores de coordenadas y abscisas, tal como se muestra en el siguiente código:

%r.ir library(googleVis) df=data.frame(country=c("USA", "Reino Unido", "Brasil"), val1=c(10,13,14), val2=c(23,12,26)) Bar <- gvisBarChart(df) print(Bar, tag = 'chart')

La gráfica resultante se verá tal como la siguiente:

image-20250213-063029.png

Diagramas de velas

Este tipo de diagrama se puede generar con el siguiente código:

%r.ir library(googleVis) Candle <- gvisCandlestickChart(OpenClose, options=list(legend='none')) print(Candle, tag = 'chart')

El resultado se muestra de la siguiente forma:

image-20250213-064700.png

Gráfica de líneas

De manera muy similar a la gráfica de barras, se puede generar una gráfica de líneas con el siguiente código:

%r.ir library(googleVis) df=data.frame(country=c("USA", "Reino Unido", "Brasil"), val1=c(10,13,14), val2=c(23,12,32)) Line <- gvisLineChart(df) print(Line, tag = 'chart')

Tras ejecutarlo, se verá así:

image-20250213-065629.png

Gráfico de pares

Para analizar la distribución de datos, se puede dibujar un gráfico de pares de manera sencilla. Así, tomando de partida los datos del conjunto de «iris»:

%r.ir pairs(iris)

El resultado sería:

image-20250213-070104.png

Es posible representar este gráfico con rangos de colores, modificando ligeramente el código. Así, para un rango de tres colores se especificaría de la siguiente forma:

%r.ir plot(iris, col = heat.colors(3))

El resultado se vería tal que así:

image-20250213-070341.png

Mapa de calor

Otro gráfico típico que se puede representar es el mapa de calor. Se puede generar mediante el siguiente código:

%r.ir library(ggplot2) pres_rating <- data.frame( rating = as.numeric(presidents), year = as.numeric(floor(time(presidents))), quarter = as.numeric(cycle(presidents)) ) p <- ggplot(pres_rating, aes(x=year, y=quarter, fill=rating))

El mapa generado se vería así:

image-20250213-073634.png

Diagrama de burbujas

También se puede visualizar la información en forma de diagrama de burbujas. Tomando el conjunto de datos de «fruits», se generaría el diagrama mediante el siguiente código:

%r.ir library(googleVis) bubble <- gvisBubbleChart(Fruits, idvar="Fruit", xvar="Sales", yvar="Expenses", colorvar="Year", sizevar="Profit", options=list( hAxis='{minValue:75, maxValue:125}')) print(bubble, tag = 'chart')

El resultado sería el siguiente gráfico:

image-20250213-085215.png

Mapas

Por último, pero no por ello menos importante, es posible visualizar mapas proyectados. Para ello, habrá que definir el siguiente código:

%r.ir library(googleVis) geo = gvisGeoChart(Exports, locationvar = "Country", colorvar="Profit", options=list(Projection = "kavrayskiy-vii")) print(geo, tag = 'chart')

En el ejemplo indicado, se mostrará entonces un plano con los países coloreados según el conjunto de datos «exports»:

image-20250213-085931.png

Conclusiones

Como se puede ver, es posible interactuar con los datos de diversas formas haciendo uso de los Notebooks con R. En el caso de representaciones más avanzadas, usando gráficos y diagramas, las diferentes APIs, como el de Google que se ha utilizado en este caso, resultan útiles y muy prácticas.

Este tutorial ha querido mostrar representaciones básicas como ejemplo, por lo que se recomienda leer la documentación tanto de R como de las APIs que se quieran utilizar para poder configurar con más detalle las opciones disponibles.

Descargar ejemplo

A continuación se encuentra disponible para descargar el ejemplo utilizado en este tutorial:

Related content