Intérprete de R para Apache Zeppelin
- 1 Introducción
- 2 Ejemplos de uso
- 2.1 Hola mundo
- 2.2 Mostrar datos tabulados
- 2.3 Mostrar series de números
- 2.4 Cargar e interactuar con datasets
- 2.5 Formatear la salida
- 2.6 Ejecutar código HTML
- 2.7 Visualización de gráficas
- 2.7.1 Gráfica de barras
- 2.7.2 Diagramas de velas
- 2.7.3 Gráfica de líneas
- 2.7.4 Gráfico de pares
- 2.7.5 Mapa de calor
- 2.7.6 Diagrama de burbujas
- 2.7.7 Mapas
- 3 Conclusiones
- 4 Descargar ejemplo
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.
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:
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:
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:
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»:
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:
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:
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:
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:
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í:
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:
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í:
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í:
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:
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»:
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: