Recorridos con apply (una perspectiva diferente a los ciclos tradicionales)
Siempre tiende uno a buscar símiles entre un lenguaje de programación y otro, y siempre o casi siempre funciona con aquellos lenguajes que toman como inspiración al lenguaje C, y que para ser honestos viene del antiguo y primitivo mundo de los lenguajes procedimentales (aunque C evolucionó a C++ para participar y ser en gran medida uno de los principales protagonistas del boom de la programación orientada a objetos).
Sin embargo, y otra vez siendo honestos, en principio el código de R me parecía escritura del alfabeto chino, había cosas únicas que no había visto en otros lenguajes de programación.
Es por eso que escribo el siguiente artículo que tiene que ver con los recorridos que se hacen a estructuras de datos, los llamados ciclos (for, while, do-while, repeat, do loop, etc,).
Ya llevo algunos años con R y me complacía programar soluciones usando ciclos ya que era la forma que me enseñaron desde la preparatoria, sin embargo con ánimo de hacer el código más eficiente di un vistazo a la familia de instrucciones apply y aunque en principio mi idea era buscar algún for-each que facilita el recorrido de colecciones, reflexioné e identifiqué que la forma de iterar en R adicional a los ciclos es como ya mencioné la familia de los apply.
Vagando por la Intenet encontré un curso en video muy interesante parece ser de la plataforma LinkedIn Learning y que por extraña razón me dejó verlo sin registrarme, en este caso el tema de apply corresponde al curso llamado "R para Big Data esencial". Además para evitarme desempolvar mis clases que crean datos aleatorios, encontré el conjunto de datos (dataset) que se usa en el video en el sitio "Harvard Metaverse" que es una plataforma gratuita para el intercambio de información.
Este conjunto de datos contiene información de vuelos (llegadas y salidas) de los Estados Unidos desde el año de 1987 a abril del 2008, en este ejercicio tomaremos los del año de 2008 y se puede descargar desde aquí.
Retomo el ejercicio y lo trato de explicar un poco con mis palabras y en cierto modo desde la perspectiva de las personas que nos dedicamos a las TICs y no entendemos a profundidad tanto el dominio del lenguaje de programación así como los fundamentos matemáticos y de la ahora "ciencia de datos".
Este primer código es para ver la velocidad de un método (usando un for) y el otro (usando un apply) y la idea es comparar el tiempo que lleva para sacar la media aritmética de las filas de las dos formas.
Una de las cosas que me topé para replicar el ejemplo fue el uso de read_csv, que parece pertenece a la librería tidyverse, se instaló aunque manda unas advertencias que muestro a continuación.
Sin embargo el ejemplo funcionó.
Lo primero que vamos a hacer es leer el archivo que se descargo y vamos a seleccionar solo las columnas que necesitamos, que son las que tiene que ver con tiempos de retraso del vuelo (por esta ocasión comparto código como texto debido a que vamos a explicar el mismo).
library(tidyverse)
df <- as.data.frame(read_csv("ruta/2008.csv",n_max = 100000))
df <- df[,c("CarrierDelay","WeatherDelay", "NASDelay", "SecurityDelay", "LateAircraftDelay")]
Comentarios
Publicar un comentario