background-color: #272822 <br> <br> <br> <br> <br> <br> <h1 style='color:white'> <center> R para contextos humanitarios de emergencia</center></h1> ## <center><font style='color:#E495A5'>N</font><font style='color:#D89F7F'>u</font><font style='color:#BDAB66'>e</font><font style='color:#96B56C'>s</font><font style='color:#65BC8C'>t</font><font style='color:#39BEB1'>r</font><font style='color:#55B8D0'>a</font><font style='color:#91ACE1'>s</font> <font style='color:#C29DDE'>p</font><font style='color:#DE94C8'>r</font><font style='color:#E495A5'>o</font><font style='color:#D89F7F'>p</font><font style='color:#BDAB66'>i</font><font style='color:#96B56C'>a</font><font style='color:#65BC8C'>s</font> <font style='color:#39BEB1'>f</font><font style='color:#55B8D0'>u</font><font style='color:#91ACE1'>n</font><font style='color:#C29DDE'>c</font><font style='color:#DE94C8'>i</font><font style='color:#E495A5'>o</font><font style='color:#D89F7F'>n</font><font style='color:#BDAB66'>e</font><font style='color:#96B56C'>s</font></center> ### <center><font style='color:#E495A5'>V</font><font style='color:#D89F7F'>i</font><font style='color:#BDAB66'>o</font><font style='color:#96B56C'>l</font><font style='color:#65BC8C'>e</font><font style='color:#39BEB1'>t</font><font style='color:#55B8D0'>a</font> <font style='color:#91ACE1'>R</font><font style='color:#C29DDE'>o</font><font style='color:#DE94C8'>i</font><font style='color:#E495A5'>z</font><font style='color:#D89F7F'>m</font><font style='color:#BDAB66'>a</font><font style='color:#96B56C'>n</font></center> --- <div class="my-header"></div> ## Mini introducción a funciones <center> <blockquote class="twitter-tweet"><p lang="en" dir="ltr">When you’ve written the same code 3 times, write a function<br><br>When you’ve given the same in-person advice 3 times, write a blog post</p>— David Robinson (@drob) <a href="https://twitter.com/drob/status/928447584712253440?ref_src=twsrc%5Etfw">November 9, 2017</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> </center> - Si te encuentras escribiendo el mismo código 3 veces, entonces es hora de escribir una **función**. - Hasta ahora estuvimos utilizando funciones que vienen con R (R base) y funciones de paquetes. - **Pero... ¿qué es una función?:** es **conjunto ordenado de comandos** definidos para ser usados en el futuro, con un **nombre representativo**, elementos de **entrada** y una **salida**. --- <div class="my-header"></div> ## Tu turno Piensa en una **función** que uses regularmente en tu trabajo. Si no existe, piensa en alguna función que podría servirte. Piensa los **pasos a seguir**. ¿Qué **nombre** le pondrías? --- <div class="my-header"></div> ## Definición de funciones **Situación:** Supongamos que una medica desea efectuar una evaluación del índice de masa corporal en los adultos de un campamento. En base a esto se planearán acciones. `\(IMC = peso (kg) / altura^2 (metros)\)` ```r IMC <- function(peso, altura) { valor_IMC <- peso / altura^2 return(valor_IMC) } ``` Al ejecutar estas lineas de código se generará un nuevo elemento `IMC` en nuestro entorno (mesada). La función está **lista para ser usada**. **function** indica que es una función y las **llaves** `{}` delimitan la extensión de la función. La función puede recibir ninguno, uno o más elementos de entrada: los argumentos. En este caso recibe 2 (`peso` y `altura`). --- <div class="my-header"></div> ## Usando la función Ahora probemos calcular mi índice de masa corporal utilizando la función: ```r IMC(60, 1.65) ``` ``` ## [1] 22.03857 ``` Los **elementos de entrada** en este caso son 2 números (60 y 1.65) y nos devolvió un número como **salida**. Probemos con dos **vectores** ```r peso_adultos <- c(50, 60, 45, 70, 100) altura_adultos <- c(1.65, 1.66, 1.6, 1.61, 1.7) IMC(peso_adultos, altura_adultos) ``` ``` ## [1] 18.36547 21.77384 17.57812 27.00513 34.60208 ``` - Es importante **respetar el orden**! ```r IMC(altura_adultos, peso_adultos) ``` ``` ## [1] 0.0006600000 0.0004611111 0.0007901235 0.0003285714 0.0001700000 ``` - Los vectores **deben tener la misma longitud**! --- <div class="my-header"></div> ## Reflexiones sobre funciones - Definir funciones nos abre todo un **mundo de posibilidades** 🌎 - Cuando tengamos **varias funciones** definidas para trabajar en un mismo proyecto/tema podemos hacer **nuestro propio paquete**! 🎁 - Y si pensamos que le puede **servir a otras personas** podemos **publicarlo** para que sea accesible! Incluso ell@s pueden ayudarme a arreglar y extender mi paquete incorporando nuevas funcionalidades --- <div class="my-header"></div> ## Licencia y material usado Licencia: [Creative Commons Attribution-ShareAlike 4.0 International License](https://creativecommons.org/licenses/by-sa/4.0/deed.es_ES). Este material está inspirado y utiliza explicaciones de: - [R para Clima](https://eliocamp.github.io/r-clima/) de Paola Corrales y Elio Campitelli - [De excel a R](https://paocorrales.github.io/deExcelaR/index.html) de Paola Corrales y Elio Campitelli - [Master the Tidyverse](https://github.com/rstudio-education/master-the-tidyverse-instructors) de Garrett Grolemund Las diapositivas fueron creadas con el paquete `xaringan`.