Bubble Sort en R

Algoritmo de ordenación Bubble Sort con R

A pesar de que no es el algoritmo de ordenación más eficiente es mi preferido, la ordenación de la burbuja es muy intuitiva y su lógica es muy fácil de entender. Dada una lista de elementos la recorre y compara cada elemento con el siguiente, si el siguiente es menor intercambiamos las posiciones de los elementos en la lista (si vamos a ordenar de menor de mayor claro), repetimos el mismo proceso varias veces, en cada iteración “emerge” como una burbuja el siguiente elemento con mayor valor, al final de la primera iteración el mayor de todos estará en la última posición, en la siguiente volvemos a recorrer toda la lista excepto el último y así de forma sucesiva, el siguiente algoritmo obtenido de este enlace está implementado en R, para minimizar el número de iteraciones que realiza si no cambia alguna posición en alguna de las vueltas para el proceso completo. []

Vectores y funciones

Aplicando funciones sobre vectores en R

Creando vectores c(1,2,3) # [1] 1 2 3 is.vector(c(1,2,3)) # [1] TRUE # Como una secuencia de enteros 2:5 # [1] 2 3 4 5 seq(2,3,by=0.5) # [1] 2.0 2.5 3.0 rep(1:2,times=3) # [1] 1 2 1 2 1 2 rep(1:2,each=2) # [1] 1 1 2 2 Seleccionando elementos de un vector Por posición: v1 <- 1:6 v1[4] # Seleccionando el cuarto elemento v1[-4] # Todos excepto el cuarto v1[2:4] # Del 2º al 4º elemento v1[-(2:4)] # Todos excepto del 2º al 4º v1[c(1,5)] # El 1º y el 5º elemento Por valor: []

Factores en R

Categorización de datos y la función factor

En R los factores se usan para categorizar conjuntos de datos basados en un conjunto fijo de valores posibles. Este tipo de dato no es muy común en otros lenguajes de programación y es conveniente entender como funciona ya que lo veremos muy a menudo trabajando con data frames por ejemplo: > v1 <- c(1,2,3) > v2 <- c("uno","dos","tres") > str(data.frame(v1,v2)) 'data.frame': 3 obs. of 2 variables: $ v1: num 1 2 3 $ v2: Factor w/ 3 levels "dos","tres","uno": 3 1 2 Aunque podemos evitar este comportamiento con stringsAsFactors=FALSE: []

Familia apply

Aplicar una función sobre estructuras de datos

A continuación voy a revisar algunos métodos para aplicar una función sobre estructuras de datos (matrices, data frames, vectores, listas, etc.) de forma repetitiva. La forma clásica de hacerlo es usar un bucle accediendo a cada elemento y aplicarle una función para transformar los datos, con las funciones de la familia apply del paquete base de R (apply, lapply , sapply, vapply, mapply, rapply y tapply) se puede simplificar mucho el código y aplicar la función sobre los elementos en una sola línea evitando los bucles. []

Manipulación de cadenas en R

Fundamentos de R

grep(): Búsqueda y reemplazo básado en patrones Un ejemplo muy sencillo pasando un vector de strings a evaluar y la expresión “pattern” para buscar coincidencias. > txt <- c("arm","foot","lefroo", "bafoobar","pattern","cpu") > grep("pattern",txt) [1] 5 Este ejemplo es algo más avanzado y permite ver el juego que puede dar para hacer búsquedas avanzadas usando expresiones regulares con perl=TRUE (ver “Perl - Regular Expressions - Tutorialspoint”), + busca una o más ocurrencias de la letra ‘b’. []

Repaso rápido conceptos básicos en R

Fundamentos de R

Este artículo es un repaso rápido de los conceptos básicos de R para desentumecer un poco la mente y practicar un poco, si ya conoces R probablemente no merezca la pena, sigue caminando y no pares aquí. En muchos casos he puesto enlaces a artículos previos donde se desarrolla y se profundiza sobre temas concretos, el listado completo de todos los artículos está en https://gitlab.com/soka/r, enlace al código fuente. []

Como crear una API RESTful en R con Plumber

Servicio Web local en R

Plumber es un paquete de R que permite crear una API Web usando comentarios del código fuente. Instalación Se instala como cualquier otro paquete: install.packages("plumber") library(plumber) Ejemplo básico Diseño de la API He creado un fichero “plumber.R” donde diseño mi API usando comentarios que empiezan por #*: # plumber.R #* Echo back the input #* @param msg The message to echo #* @get /echo function(msg=""){ list(msg = paste0("The message is: '", msg, "'")) } #* Plot a histogram #* @png #* @get /plot function(){ rand <- rnorm(100) hist(rand) } #* Return the sum of two numbers #* @param a The first number to add #* @param b The second number to add #* @post /sum function(a, b){ as. []

Acceso a APIs con R

Cliente REST usando httr y jsonlite

En este POST voy a tratar sobre un tema que siempre me apasiona en cualquier lenguaje de programación, como crear un cliente en R para interactuar con un servidor REST HTTP JSON. Como montar un servidor JSON de pruebas en pocos minutos Para montar un servidor que acepte todo tipo de operaciones no me he complicado la vida, JSON Server se instala con NPM y en pocos minutos tenemos un servidor REST HTTP JSON básico funcionando de forma local. []

Estructuras de datos en R

Como usarlas de forma eficiente

Hoy es mi cumpleaños y con el día libre en el trabajo quiero revisar algunos conceptos fundamentales de R (hoy no toca Angular ni C#), en el post que sigue revisaré las estructuras de datos en R y como usarlas de forma eficiente, es el regalo que me hago a mi mismo. Las estructuras de datos en R se pueden clasificar por su dimensión o por el tipo de datos que almacenan, llamaremos homogéneos a aquellos que solo pueden contener datos del mismo tipo, heterogéneos cuando se pueden mezclar diferentes tipos. []

Diagramas de dispersión en R (1/2)

Guía avanzada Scatter Plots en R con ggplot y geom_point

En (““Gráficos avanzados en R - Introducción a ggplot2”.” revise algunas opciones básicas para generar diagramas de dispersión (scatter plots) con ggplot. Los diagramas de dispersión se usan para mostrar la relación entre dos variables continuas (aunque también se suele representar como la relación de una variable continua y una categórica), cada observación se representa como un punto representado en coordenadas cartesianas. En esta ocasión como origen de datos emplearé el paquete “gcookbook” que contiene datasets usados como ejemplo en la publicación “R Graphics Cookbook” de Winston Chang, publicado por O’Reilly (Reference manual: gcookbook. []