¿Por qué R?

Generamos reportes e informes para diversas actividades, a veces esos reportes son repetitivos en el tiempo (por ejemplo informes mensuales, informes al final de una campaña). Solemos utilizar más de un software para generarlos, seguramente alguna hoja de cálculo y algún procesador de texto. A veces sumamos algun aplicativo para hacer presentaciones.

Si venís usándolos hace tiempo, seguro que aprendiste un montón de trucos para sacarle el jugo al máximo, habrás aprendido a usar fórmulas, tablas dinámicas, e incluso macros en las hojas de calculo y las plantillas y estilos en los documentos de texto o las presentaciones. Pero seguro que también sufriste sus limitaciones.

Por ejemplo, sn una hoja de cálculo no hay un límite claro entre datos y análisis. Sobrescribir datos es un peligro muy real y análisis complicados son imposibles de entender, especialmente si abrís una hoja de cálculo armada por otra persona (que quizás es tu vos del pasado). Además, repetir el análisis con datos distintos o cambiando algún parámetro se puede volver muy engorroso.

Seguro también tenes que copiar y pegar resultados o pasos intermedios de un software al otro, como un lindo gráfico de Excel al documento de Word con el informe.

Si lo que necesitás son reportes frecuentes y automáticos, y análisis de datos con muchas partes móviles, estaría bueno poder escribir una receta paso a paso y que la computadora corra todo automáticamente cada vez que se lo pedís. Para poder hacer eso, ese paso a paso tiene que estar escrito en un lenguaje que la computadora pueda entender, ese lenguaje es R.

¿Cómo vamos a trabajar?

Vamos a usar R como lenguaje de programación y RStudio como una IDE (Integrated Development Environment), un Entorno Integrado de Desarrollo. Si no los tenés instalado en tu computadora, no te preocupes, tenemos este proyecto en RStudio Cloud para que puedas trabajar.

Vamos a trabajar con archivos de RMarkdown para generar nuestro reportes y poder guardar el código que genera nuestro análisis, así que vamos a ver qué es un documento RMarkdown. Te preparamos este informe de ejemplo, por favor abrilo en RStudio o en RStudio Cloud.

RMarkdown

Un archivo RMarkdown es un archivo de texto plano, con algunas reglas y una sintaxis especial que nos permite escribir código y texto juntos. Cuando se “teje” (knit), el código se evaluará y ejecutará y el texto se formateará de manera que se cree un informe o documento reproducible que sea agradable de leer y que contenga todo tu trabajo.

Esto es realmente crítico para la reproducibilidad. También nos ahorra tiempo y puede ayudar en las tareas de automatización. Este documento recreará tus figuras por ti en el mismo documento donde estás escribiendo el texto que las explica. Esto le ahorrará el esfuerzo de hacer un análisis, guardar un gráfico en un archivo, copiar y pegar ese gráfico en Word o Power Point o Google Slides, y tener que hacerlo todo de nuevo después de descubrir un error de tipeo.

Ahora veamos cómo es nuestro Informe de Cultivares.

Sigamos adelante y “tejamos (knit)” el documento haciendo clic en el ovillo de hilo azul () en la parte superior del archivo RMarkdown.

¡Acabamos de crear un archivo html! Se trata de una única página web que estamos viendo localmente en nuestros propias computadoras. Al generar este documento RMarkdown, R ha formateado el texto markdown y ha ejecutado el código R.

Rmarkdown a la izquierda. Documento generado a la derecha

Texto markdown

Podes ver una guia sobre rmarkdown en esta guía rápida, pero aquí hay una sintaxis mínima para empezar:

  • encabezados empiezan con # o ##y asi siguiendo (es importante poner un espacio después del último # y antes de escribir el título).
  • las palabras en negrita están rodeadas de **
  • y las cursiva, con _

Código de R

El código R se escribe dentro de “chunks (bloques)” de código. Los bloques de código comienzan con ```{r label} (donde “label” es un nombre opcional y único) y terminan con ```. En RStudio, podes crear un nuevo chunk con el atajo de teclado Ctrl + Alt + I.

Este informe muestra información sobre un cultivar, pero podríamos cambiar algunas líneas de código para crear el mismo análisis para los otros cultivares incluidos en la base de datos.

Ahora es tu turno. Sigue buscando en el código, si encuentras alguna mención a “ACA 861”, cámbiala por cualquiera de los otros cultivares.

Esta tarea es un poco engorrosa si hay que cambiar muchas cosas cada vez que queremos volver a ejecutar el análisis para diferentes especies. Pero no te preocupes, aprenderemos a hacer todo más automático al final del taller.

LS0tDQp0aXRsZTogIkludHJvZHVjY2nDs24geSBSZXBvcnRlcyINCm91dHB1dDogDQogIGh0bWxfZG9jdW1lbnQ6DQogICAgY29kZV9kb3dubG9hZDogdHJ1ZQ0KICAgIHRvYzogdHJ1ZQ0KICAgIHRvY19mbG9hdDogZmFsc2UNCiAgICBoaWdobGlnaHQ6IHRhbmdvDQotLS0NCg0KIyMgwr9Qb3IgcXXDqSBSPw0KDQpHZW5lcmFtb3MgcmVwb3J0ZXMgZSBpbmZvcm1lcyBwYXJhIGRpdmVyc2FzIGFjdGl2aWRhZGVzLCBhIHZlY2VzIGVzb3MgcmVwb3J0ZXMgc29uIHJlcGV0aXRpdm9zIGVuIGVsIHRpZW1wbyAocG9yIGVqZW1wbG8gaW5mb3JtZXMgbWVuc3VhbGVzLCBpbmZvcm1lcyBhbCBmaW5hbCBkZSB1bmEgY2FtcGHDsWEpLiBTb2xlbW9zIHV0aWxpemFyIG3DoXMgZGUgdW4gc29mdHdhcmUgcGFyYSBnZW5lcmFybG9zLCBzZWd1cmFtZW50ZSBhbGd1bmEgaG9qYSBkZSBjw6FsY3VsbyB5IGFsZ8O6biBwcm9jZXNhZG9yIGRlIHRleHRvLiBBIHZlY2VzIHN1bWFtb3MgYWxndW4gYXBsaWNhdGl2byBwYXJhIGhhY2VyIHByZXNlbnRhY2lvbmVzLiANCg0KU2kgdmVuw61zIHVzw6FuZG9sb3MgaGFjZSB0aWVtcG8sIHNlZ3VybyBxdWUgYXByZW5kaXN0ZSB1biBtb250w7NuIGRlIHRydWNvcyBwYXJhIHNhY2FybGUgZWwganVnbyBhbCBtw6F4aW1vLCBoYWJyw6FzIGFwcmVuZGlkbyBhIHVzYXIgZsOzcm11bGFzLCB0YWJsYXMgZGluw6FtaWNhcywgZSBpbmNsdXNvIG1hY3JvcyBlbiBsYXMgaG9qYXMgZGUgY2FsY3VsbyB5IGxhcyBwbGFudGlsbGFzIHkgZXN0aWxvcyBlbiBsb3MgZG9jdW1lbnRvcyBkZSB0ZXh0byBvIGxhcyBwcmVzZW50YWNpb25lcy4gUGVybyBzZWd1cm8gcXVlIHRhbWJpw6luIHN1ZnJpc3RlIHN1cyBsaW1pdGFjaW9uZXMuDQoNClBvciBlamVtcGxvLCBzbiB1bmEgaG9qYSBkZSBjw6FsY3VsbyBubyBoYXkgdW4gbMOtbWl0ZSBjbGFybyBlbnRyZSBkYXRvcyB5IGFuw6FsaXNpcy4gU29icmVzY3JpYmlyIGRhdG9zIGVzIHVuIHBlbGlncm8gbXV5IHJlYWwgeSBhbsOhbGlzaXMgY29tcGxpY2Fkb3Mgc29uIGltcG9zaWJsZXMgZGUgZW50ZW5kZXIsIGVzcGVjaWFsbWVudGUgc2kgYWJyw61zIHVuYSBob2phIGRlIGPDoWxjdWxvIGFybWFkYSBwb3Igb3RyYSBwZXJzb25hIChxdWUgcXVpesOhcyBlcyB0dSB2b3MgZGVsIHBhc2FkbykuIEFkZW3DoXMsIHJlcGV0aXIgZWwgYW7DoWxpc2lzIGNvbiBkYXRvcyBkaXN0aW50b3MgbyBjYW1iaWFuZG8gYWxnw7puIHBhcsOhbWV0cm8gc2UgcHVlZGUgdm9sdmVyIG11eSBlbmdvcnJvc28uDQoNClNlZ3VybyB0YW1iacOpbiB0ZW5lcyBxdWUgY29waWFyIHkgcGVnYXIgcmVzdWx0YWRvcyBvIHBhc29zIGludGVybWVkaW9zIGRlIHVuIHNvZnR3YXJlIGFsIG90cm8sIGNvbW8gdW4gbGluZG8gZ3LDoWZpY28gZGUgRXhjZWwgYWwgZG9jdW1lbnRvIGRlIFdvcmQgY29uIGVsIGluZm9ybWUuDQoNClNpIGxvIHF1ZSBuZWNlc2l0w6FzIHNvbiByZXBvcnRlcyBmcmVjdWVudGVzIHkgYXV0b23DoXRpY29zLCB5IGFuw6FsaXNpcyBkZSBkYXRvcyBjb24gbXVjaGFzIHBhcnRlcyBtw7N2aWxlcywgZXN0YXLDrWEgYnVlbm8gcG9kZXIgZXNjcmliaXIgdW5hIHJlY2V0YSBwYXNvIGEgcGFzbyB5IHF1ZSBsYSBjb21wdXRhZG9yYSBjb3JyYSB0b2RvIGF1dG9tw6F0aWNhbWVudGUgY2FkYSB2ZXogcXVlIHNlIGxvIHBlZMOtcy4gUGFyYSBwb2RlciBoYWNlciBlc28sIGVzZSBwYXNvIGEgcGFzbyB0aWVuZSBxdWUgZXN0YXIgZXNjcml0byBlbiB1biBsZW5ndWFqZSBxdWUgbGEgY29tcHV0YWRvcmEgcHVlZGEgZW50ZW5kZXIsIGVzZSBsZW5ndWFqZSBlcyBSLg0KDQojIyDCv0PDs21vIHZhbW9zIGEgdHJhYmFqYXI/DQoNClZhbW9zIGEgdXNhciBSIGNvbW8gbGVuZ3VhamUgZGUgcHJvZ3JhbWFjacOzbiB5IFJTdHVkaW8gY29tbyB1bmEgSURFIChJbnRlZ3JhdGVkIERldmVsb3BtZW50IEVudmlyb25tZW50KSwgdW4gRW50b3JubyBJbnRlZ3JhZG8gZGUgRGVzYXJyb2xsby4gU2kgbm8gbG9zIHRlbsOpcyBpbnN0YWxhZG8gZW4gdHUgY29tcHV0YWRvcmEsIG5vIHRlIHByZW9jdXBlcywgdGVuZW1vcyBlc3RlICBbcHJveWVjdG8gZW4gUlN0dWRpbyBDbG91ZF0oaHR0cHM6Ly9wb3NpdC5jbG91ZC9jb250ZW50LzY0MzEyODYpIHBhcmEgcXVlIHB1ZWRhcyB0cmFiYWphci4NCg0KVmFtb3MgYSB0cmFiYWphciBjb24gYXJjaGl2b3MgZGUgUk1hcmtkb3duIHBhcmEgZ2VuZXJhciBudWVzdHJvIHJlcG9ydGVzIHkgcG9kZXIgZ3VhcmRhciBlbCBjw7NkaWdvIHF1ZSBnZW5lcmEgbnVlc3RybyBhbsOhbGlzaXMsIGFzw60gcXVlIHZhbW9zIGEgdmVyIHF1w6kgZXMgdW4gZG9jdW1lbnRvIFJNYXJrZG93bi4gVGUgcHJlcGFyYW1vcyBbZXN0ZSBpbmZvcm1lIGRlIGVqZW1wbG9dKGh0dHBzOi8vZ2l0aHViLmNvbS95YWJlbGxpbmkvQWdyb1JlcG9ydGVzQ29uUi9ibG9iL21haW4vcmVwb3J0ZV9jdWx0aXZhcmVzLlJtZCksIHBvciBmYXZvciBhYnJpbG8gZW4gUlN0dWRpbyBvIGVuIFJTdHVkaW8gQ2xvdWQuIA0KDQoNCiMjIFJNYXJrZG93bg0KDQpVbiBhcmNoaXZvIFJNYXJrZG93biBlcyB1biBhcmNoaXZvIGRlIHRleHRvIHBsYW5vLCBjb24gYWxndW5hcyByZWdsYXMgeSB1bmEgc2ludGF4aXMgZXNwZWNpYWwgcXVlIG5vcyBwZXJtaXRlIGVzY3JpYmlyIGPDs2RpZ28geSB0ZXh0byBqdW50b3MuIEN1YW5kbyBzZSAidGVqZSIgKCprbml0KiksIGVsIGPDs2RpZ28gc2UgZXZhbHVhcsOhIHkgZWplY3V0YXLDoSB5IGVsIHRleHRvIHNlIGZvcm1hdGVhcsOhIGRlIG1hbmVyYSBxdWUgc2UgY3JlZSB1biBpbmZvcm1lIG8gZG9jdW1lbnRvIHJlcHJvZHVjaWJsZSBxdWUgc2VhIGFncmFkYWJsZSBkZSBsZWVyIHkgcXVlIGNvbnRlbmdhIHRvZG8gdHUgdHJhYmFqby4NCg0KRXN0byBlcyByZWFsbWVudGUgY3LDrXRpY28gcGFyYSBsYSByZXByb2R1Y2liaWxpZGFkLiBUYW1iacOpbiBub3MgYWhvcnJhIHRpZW1wbyB5IHB1ZWRlIGF5dWRhciBlbiBsYXMgdGFyZWFzIGRlIGF1dG9tYXRpemFjacOzbi4gRXN0ZSBkb2N1bWVudG8gcmVjcmVhcsOhIHR1cyBmaWd1cmFzIHBvciB0aSBlbiBlbCBtaXNtbyBkb2N1bWVudG8gZG9uZGUgZXN0w6FzIGVzY3JpYmllbmRvIGVsIHRleHRvIHF1ZSBsYXMgZXhwbGljYS4gRXN0byBsZSBhaG9ycmFyw6EgZWwgZXNmdWVyem8gZGUgaGFjZXIgdW4gYW7DoWxpc2lzLCBndWFyZGFyIHVuIGdyw6FmaWNvIGVuIHVuIGFyY2hpdm8sIGNvcGlhciB5IHBlZ2FyIGVzZSBncsOhZmljbyBlbiBXb3JkIG8gUG93ZXIgUG9pbnQgbyBHb29nbGUgU2xpZGVzLCB5IHRlbmVyIHF1ZSBoYWNlcmxvIHRvZG8gZGUgbnVldm8gZGVzcHXDqXMgZGUgZGVzY3VicmlyIHVuIGVycm9yIGRlIHRpcGVvLg0KDQpBaG9yYSB2ZWFtb3MgY8OzbW8gZXMgbnVlc3RybyBJbmZvcm1lIGRlIEN1bHRpdmFyZXMuDQoNCiogTGEgcGFydGUgc3VwZXJpb3IgdGllbmUgZWwgVMOtdHVsbyB5IGVsIHRpcG8gZGUgc2FsaWRhIChxdWUgZW4gZXN0ZSBjYXNvIGVzIHVuIGRvY3VtZW50byBIVE1MKS4NCiogRGViYWpvIGhheSBzZWNjaW9uZXMgYWx0ZXJuYXMgX2JsYW5jYXNfIHkgX2dyaXNlc18uIEVzdGFzIHNvbiBsYXMgZG9zIHNlY2Npb25lcyBwcmluY2lwYWxlcyBxdWUgY29tcG9uZW4gdW4gYXJjaGl2byBSTWFya2Rvd246DQogICAgICAqIExhcyBzZWNjaW9uZXMgZ3Jpc2VzIHNvbiBlbCBjw7NkaWdvIFINCiAgICAgICogTGFzIHNlY2Npb25lcyBibGFuY2FzIHNvbiBlbCB0ZXh0byBkZSBNYXJrZG93bg0KKiBIYXkgdGV4dG8gbmVncm8sIGF6dWwgeSB2ZXJkZS4NCg0KPiBTaWdhbW9zIGFkZWxhbnRlIHkgInRlamFtb3MgKGtuaXQpIiBlbCBkb2N1bWVudG8gaGFjaWVuZG8gY2xpYyBlbiBlbCBvdmlsbG8gZGUgaGlsbyBhenVsICg8aW1nIHNyYz0iaW1nL2tuaXQtYm90b24ucG5nIj4pIGVuIGxhIHBhcnRlIHN1cGVyaW9yIGRlbCBhcmNoaXZvIFJNYXJrZG93bi4gDQoNCsKhQWNhYmFtb3MgZGUgY3JlYXIgdW4gYXJjaGl2byBodG1sISBTZSB0cmF0YSBkZSB1bmEgw7puaWNhIHDDoWdpbmEgd2ViIHF1ZSBlc3RhbW9zIHZpZW5kbyBsb2NhbG1lbnRlIGVuIG51ZXN0cm9zIHByb3BpYXMgY29tcHV0YWRvcmFzLiBBbCBnZW5lcmFyIGVzdGUgZG9jdW1lbnRvIFJNYXJrZG93biwgUiBoYSBmb3JtYXRlYWRvIGVsIHRleHRvIG1hcmtkb3duIHkgaGEgZWplY3V0YWRvIGVsIGPDs2RpZ28gUi4NCg0KPGltZyBzcmM9ImltZy9tYXJrZG93bi1rbml0LnBuZyIgYWx0PSJSbWFya2Rvd24gYSBsYSBpenF1aWVyZGEuIERvY3VtZW50byBnZW5lcmFkbyBhIGxhIGRlcmVjaGEiLz4NCg0KIyMjIFRleHRvIG1hcmtkb3duDQoNClBvZGVzIHZlciB1bmEgZ3VpYSBzb2JyZSBybWFya2Rvd24gW2VuIGVzdGEgZ3XDrWEgcsOhcGlkYV0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3JzdHVkaW8vY2hlYXRzaGVldHMvbWFpbi90cmFuc2xhdGlvbnMvc3BhbmlzaC9ybWFya2Rvd25fZXMucGRmKSwgcGVybyBhcXXDrSBoYXkgdW5hIHNpbnRheGlzIG3DrW5pbWEgcGFyYSBlbXBlemFyOg0KDQoqIGVuY2FiZXphZG9zIGVtcGllemFuIGNvbiBgIyBgIG8gYCMjIGB5IGFzaSBzaWd1aWVuZG8gKGVzIGltcG9ydGFudGUgcG9uZXIgdW4gZXNwYWNpbyBkZXNwdcOpcyBkZWwgw7psdGltbyBgI2AgeSBhbnRlcyBkZSBlc2NyaWJpciBlbCB0w610dWxvKS4NCiogbGFzIHBhbGFicmFzIGVuIG5lZ3JpdGEgZXN0w6FuIHJvZGVhZGFzIGRlIGAqKmANCiogeSBsYXMgY3Vyc2l2YSwgY29uIGBfYA0KDQojIyMgQ8OzZGlnbyBkZSBSDQoNCmBgYHtyIGluY2x1ZGU9RkFMU0V9DQpjaHVua19zdGFydCA8LSAiYGBge3IgbGFiZWx9Ig0KY2h1bmtfZW5kIDwtICJgYGAiDQpgYGANCg0KRWwgY8OzZGlnbyBSIHNlIGVzY3JpYmUgZGVudHJvIGRlICIqY2h1bmtzKiAoYmxvcXVlcykiIGRlIGPDs2RpZ28uIExvcyBibG9xdWVzIGRlIGPDs2RpZ28gY29taWVuemFuIGNvbiBgYCBgciBjaHVua19zdGFydGAgYGAgKGRvbmRlICJsYWJlbCIgZXMgdW4gbm9tYnJlIG9wY2lvbmFsIHkgw7puaWNvKSB5IHRlcm1pbmFuIGNvbiBgYCBgciBjaHVua19lbmRgIGBgLiBFbiBSU3R1ZGlvLCBwb2RlcyBjcmVhciB1biBudWV2byBjaHVuayBjb24gZWwgYXRham8gZGUgdGVjbGFkbyBgQ3RybCArIEFsdCArIElgLg0KDQpFc3RlIGluZm9ybWUgbXVlc3RyYSBpbmZvcm1hY2nDs24gc29icmUgdW4gY3VsdGl2YXIsIHBlcm8gcG9kcsOtYW1vcyBjYW1iaWFyIGFsZ3VuYXMgbMOtbmVhcyBkZSBjw7NkaWdvIHBhcmEgY3JlYXIgZWwgbWlzbW8gYW7DoWxpc2lzIHBhcmEgbG9zIG90cm9zIGN1bHRpdmFyZXMgaW5jbHVpZG9zIGVuIGxhIGJhc2UgZGUgZGF0b3MuDQoNCg0KPiBBaG9yYSBlcyB0dSB0dXJuby4gU2lndWUgYnVzY2FuZG8gZW4gZWwgY8OzZGlnbywgc2kgZW5jdWVudHJhcyBhbGd1bmEgbWVuY2nDs24gYSAiQUNBIDg2MSIsIGPDoW1iaWFsYSBwb3IgY3VhbHF1aWVyYSBkZSBsb3Mgb3Ryb3MgY3VsdGl2YXJlcy4gDQoNCkVzdGEgdGFyZWEgZXMgdW4gcG9jbyBlbmdvcnJvc2Egc2kgaGF5IHF1ZSBjYW1iaWFyIG11Y2hhcyBjb3NhcyBjYWRhIHZleiBxdWUgcXVlcmVtb3Mgdm9sdmVyIGEgZWplY3V0YXIgZWwgYW7DoWxpc2lzIHBhcmEgZGlmZXJlbnRlcyBlc3BlY2llcy4gUGVybyBubyB0ZSBwcmVvY3VwZXMsIGFwcmVuZGVyZW1vcyBhIGhhY2VyIHRvZG8gbcOhcyBhdXRvbcOhdGljbyBhbCBmaW5hbCBkZWwgdGFsbGVyLiANCg0K