Prefacio

Este libro le enseñará cómo programar en R. Pasará de cargar datos a escribir sus propias funciones (que superarán las funciones de otros usuarios de R). Pero esta no es una introducción típica a R. Quiero ayudarlo a convertirse en científico de datos, así como en informático, por lo que este libro se centrará en las habilidades de programación que están más relacionadas con la ciencia de datos.

Los capítulos del libro están ordenados de acuerdo con tres proyectos prácticos; dado que son proyectos bastante sustanciales, abarcan varios capítulos. Elegí estos proyectos por dos razones. Primero, cubren la amplitud del lenguaje R. Aprenderá a cargar datos, ensamblar y desensamblar objetos de datos, navegar por el sistema de entorno de R, escribir sus propias funciones y utilizar todas las herramientas de programación de R, como declaraciones if else, bucles, clases S3, sistema de paquetes de R, y las herramientas de depuración de R. Los proyectos también le enseñarán cómo escribir código R vectorizado, un estilo de código ultrarrápido que aprovecha todas las cosas que R hace mejor.

Pero, lo que es más importante, los proyectos le enseñarán cómo resolver los problemas logísticos de la ciencia de datos—y hay muchos problemas logísticos. Cuando trabaje con datos, deberá almacenar, recuperar y manipular grandes conjuntos de valores sin introducir errores. A medida que avance en el libro, le enseñaré no solo cómo programar con R, sino también cómo usar las habilidades de programación para respaldar su trabajo como científico de datos.

No todos los programadores necesitan ser científicos de datos, por lo que no todos los programadores encontrarán útil este libro. Encontrará este libro útil si se encuentra en una de las siguientes categorías:

Una de las mayores sorpresas de este libro es que no cubro las aplicaciones tradicionales de R, como modelos y gráficos; en cambio, trato a R puramente como un lenguaje de programación. ¿Por qué este enfoque estrecho? R está diseñado para ser una herramienta que ayude a los científicos a analizar datos. Tiene muchas funciones excelentes que hacen gráficos y ajustan modelos a los datos. Como resultado, muchos estadísticos aprenden a usar R como si fuera una pieza de software: aprenden qué funciones hacen lo que quieren e ignoran el resto.

Este es un enfoque comprensible para aprender R. La visualización y el modelado de datos son habilidades complicadas que requieren toda la atención de un científico. Se necesita experiencia, juicio y enfoque para extraer información confiable de un conjunto de datos. No recomendaría que ningún científico de datos se distraiga con la programación de computadoras hasta que se sienta cómodo con la teoría y la práctica básicas de su oficio. Si desea aprender el oficio de la ciencia de datos, le recomiendo el libro R para la Ciencia de Datos, mi volumen complementario a este libro, coescrito con Hadley Wickham.

Sin embargo, aprender a programar debería estar en la lista de tareas de todos los científicos de datos. Saber programar lo convertirá en un analista más flexible y aumentará su dominio de la ciencia de datos en todos los sentidos. Mi metáfora favorita para describir esto fue presentada por Greg Snow en la lista de correo de ayuda de R en mayo de 2006. Usar funciones en R es como viajar en autobús. Escribir funciones en R es como conducir un coche.

Los autobuses son muy fáciles de usar, solo necesita saber a qué autobús subir, dónde subir y dónde bajarse (y debe pagar su tarifa). Los autos, por otro lado, requieren mucho más trabajo: necesitas tener algún tipo de mapa o direcciones (incluso si el mapa está en tu cabeza), necesitas poner gasolina de vez en cuando, necesitas saber las reglas de la vía (tener algún tipo de licencia de conducir). La gran ventaja del automóvil es que puede llevarlo a muchos lugares a los que el autobús no llega y es más rápido para algunos viajes que requieren transbordo entre autobuses.

Usando esta analogía, los programas como SPSS son buses, fáciles de usar para cosas estándar, pero muy frustrantes si quieres hacer algo que no está preprogramado.

R es un todoterreno con tracción en las cuatro ruedas (aunque respetuoso con el medio ambiente) con una bicicleta en la parte trasera, un kayak en la parte superior, buenos zapatos para caminar y correr en el asiento del pasajero y equipo para escalar montañas y espeleología en la parte trasera.

R puede llevarlo a donde quiera ir si se toma el tiempo para aprender a usar el equipo, pero eso llevará más tiempo que aprender dónde están las paradas de autobús en SPSS. - Greg Snow

Greg compara R con SPSS, pero asume que usa todos los poderes de R; es decir, que aprendas a programar en R. Si solo usas funciones que ya existen en R, estás usando R como SPSS: es un bus que solo te puede llevar a ciertos lugares.

Esta flexibilidad es importante para los científicos de datos. Los detalles exactos de un método o simulación cambiarán de un problema a otro. Si no puede crear un método adaptado a su situación, puede verse tentado a hacer suposiciones poco realistas solo para poder utilizar un método inadecuado que ya existe.

Este libro te ayudará a dar el salto del autobús al automóvil. Lo he escrito para programadores principiantes. No hablo de la teoría de las ciencias de la computación—no hay discusiones sobre la gran O() y la pequeña o() en estas páginas. Tampoco entro en detalles avanzados como el funcionamiento de la evaluación concisa. Estas aspectos son interesantes si piensas en informática a nivel teórico, pero son una distracción cuando aprendes a programar por primera vez.

En su lugar, te enseño a programar en R con tres ejemplos concretos. Estos ejemplos son cortos, fáciles de entender y cubren todo lo que necesita saber.

He enseñado este material muchas veces en mi trabajo como Master Instructor en RStudio. Como docente, he descubierto que los estudiantes aprenden conceptos abstractos mucho más rápido cuando se ilustran con ejemplos concretos. Los ejemplos también tienen una segunda ventaja: proporcionan una práctica inmediata. Aprender a programar es como aprender a hablar otro idioma—yprogresas más rápido cuando practicas. De hecho, aprender a programar es aprender a hablar otro idioma. Obtendrá los mejores resultados si sigue los ejemplos del libro y experimenta cada vez que se le ocurre una idea.


El libro es un complemento de R para la Ciencia de Datos. En ese libro, Hadley Wickham y yo explicamos cómo usar R para hacer diagramas, modelar datos y escribir informes. Ese libro enseña estas tareas como habilidades de ciencia de datos, que requieren juicio y experiencia—no como ejercicios de programación, que también lo son. Este libro le enseñará a programar en R. No se supone que haya dominado las habilidades de ciencia de datos que se enseñan en R para la Ciencia de Datos (ni que tenga la intención de hacerlo). Sin embargo, este conjunto de habilidades amplifica ese. Y si domina ambos, será un científico de datos con conocimientos de informática, apto para obtener un salario alto e influir en el diálogo científico.


Convenciones Usadas en Este Libro

En este libro se utilizan las siguientes convenciones tipográficas:

Cursiva:: Indica nuevos términos, URL, direcciones de correo electrónico, nombres de archivo y extensiones de archivo.

Ancho contante:: se utiliza para listas de programas, así como dentro de párrafos para referirse a elementos de programas como nombres de variables o funciones, bases de datos, tipos de datos, variables de entorno, declaraciones y palabras clave.

Negrita de ancho constante:: muestra comandos u otro texto que el usuario debe escribir literalmente.

Cursiva de ancho constante:: muestra texto que debe reemplazarse con valores proporcionados por el usuario o por valores determinados por el contexto.

Para comentar o hacer preguntas técnicas sobre este libro, presente un issue en github.com/rstudio-education/hopr.

Reconocimientos

Muchas personas excelentes me han ayudado a escribir este libro, desde mis dos editoras, Courtney Nash y Julie Steele, hasta el resto del equipo de O’Reilly, quienes diseñaron, corrigieron e indexaron el libro. Además, Greg Snow me permitió generosamente citarlo en este prefacio. Les ofrezco todo mi más sincero agradecimiento.

También me gustaría agradecer a Hadley Wickham, quien ha moldeado la forma en que pienso y enseño R. Muchas de las ideas de este libro provienen de Estadística 405, un curso que ayudé a enseñar a Hadley cuando era estudiante de doctorado en la Universidad de Rice.

Más ideas provinieron de los estudiantes y profesores de Introducción a la ciencia de datos con R, un taller que enseño en nombre de RStudio. Gracias a todos ustedes. Me gustaría agradecer especialmente a mis asistentes de enseñanza Josh Paulson, Winston Chang, Jaime Ramos, Jay Emerson y Vivian Zhang.

Gracias también a JJ Allaire y al resto de mis colegas de RStudio que proporcionan el IDE de RStudio, una herramienta que hace que sea mucho más fácil usar, enseñar y escribir sobre R.

Finalmente, quisiera agradecer a mi esposa, Kristin, por su apoyo y comprensión mientras escribía este libro.