class: center, middle, inverse, title-slide # Mejores paquetes de R, mejor ciencia ## Maëlle Salmon
ma_salmon
maelle
masalmon.eu ### 2018/01/25 --- # Mis objetivos hoy -- * Presentar a **rOpenSci**, inspirarles a * utilizar nuestros paquetes * participar en el proyecto -- * Inspirarles a pensar en la **calidad de los paquetes R** -- 🔗 charla https://tiny.cc/conectar --- class: part-slide, center, middle # ¿Quiénes somos? 👋 --- # Quién soy yo (Maëlle, Ma-El) <img src="index_files/figure-html/meee-1.png" width="533" style="display: block; margin: auto;" /> --- # Quién soy yo (Maëlle, Ma-El) * Licenciada en biología, magister en ecología * Magister en salud pública * Doctora en estadística Hoy en día *research software engineer* * para rOpenSci * para Locke Data --- # Mi lugar en la comunidad de R <img src="index_files/figure-html/community-1.png" width="300" style="display: block; margin: auto;" /> * R-Ladies Global social master (Twitter!) * Equipo de R Weekly y blogger * Editora voluntaria para el sistema de revisión por pares de software en rOpenSci --- # ¿Qué es rOpenSci? * Una comunidad científica y de desarrollo de software R * Apoyo a la ciencia abierta y reproducible * Paquetes R mantenidos por el personal y la comunidad -- Muy bien, pero mejor es ilustrarlo con ejemplos... 🔗 charla https://tiny.cc/conectar --- class: part-slide, center, middle # Ejemplos 🤹 --- # Poster de ConectaR _.small[pdftools, tokenizers]_ -- ```r text <- pdftools::pdf_text("assets/poster_conectar.pdf") text <- tokenizers::tokenize_lines(text) text <- text[[1]][text[[1]] != ""] text <- trimws(text) text <- glue::glue_collapse(text, sep = " ") ``` Conferencia Latinoamericana de Usuarios del Lenguaje de Programación R La conferencia tiene como objetivo abrir un espacio para compartir experiencias entre investigadores, docentes y empresa privada, y encontrar puntos en común que nos permitan aprender más del lenguaje de programación. Al mismo tiempo, queremos incentivar la creación de conoci- miento a partir del uso de la herramienta en la región. Ejes temáticos de la conferencia • Aplicaciones en distintas disciplinas de la academia y la industria. Formato de • Uso en conjunto con otros lenguajes de programación participación: • Uso innovador de paquetes existentes •Charlas Invitadas • Desarrollo de nuevos paquetes •Charlas contribuidas • Uso en la enseñanza •Demos • Análisis reproducible de datos •Posters • Análisis de grandes datos • Aprendizaje automático • Visualización de datos • Análisis de datos abiertos Organizan: Fechas importantes Información Fecha límite para la recepción de conectar@ucr.ac.cr, trabajos: 20 de agosto del 2018 info.conectar2019@gmail.com Notificación aceptación: Facebook: https://www.facebook.com/ConectaR2019 1ero de noviembre del 2018 Twitter: @conectar2019 Recepción de versiones finales e (hashtag #ConectaR2019, #profesionalesR) inscripción de autores: 15 de noviembre del 2018 --- # Poster de ConectaR _.small[pdftools, tokenizers]_ ```r cld2::detect_language(text) ``` ``` ## [1] "es" ``` ```r cld3::detect_language(text) ``` ``` ## [1] "es" ``` --- # Poster de ConectaR _.small[pdftools, tokenizers]_ ```r text %>% tokenizers::tokenize_words() %>% unlist() -> words words ``` ``` ## [1] "conferencia" "latinoamericana" "de" ## [4] "usuarios" "del" "lenguaje" ## [7] "de" "programación" "r" ## [10] "la" "conferencia" "tiene" ## [13] "como" "objetivo" "abrir" ## [16] "un" "espacio" "para" ## [19] "compartir" "experiencias" "entre" ## [22] "investigadores" "docentes" "y" ## [25] "empresa" "privada" "y" ## [28] "encontrar" "puntos" "en" ## [31] "común" "que" "nos" ## [34] "permitan" "aprender" "más" ## [37] "del" "lenguaje" "de" ## [40] "programación" "al" "mismo" ## [43] "tiempo" "queremos" "incentivar" ## [46] "la" "creación" "de" ## [49] "conoci" "miento" "a" ## [52] "partir" "del" "uso" ## [55] "de" "la" "herramienta" ## [58] "en" "la" "región" ## [61] "ejes" "temáticos" "de" ## [64] "la" "conferencia" "aplicaciones" ## [67] "en" "distintas" "disciplinas" ## [70] "de" "la" "academia" ## [73] "y" "la" "industria" ## [76] "formato" "de" "uso" ## [79] "en" "conjunto" "con" ## [82] "otros" "lenguajes" "de" ## [85] "programación" "participación" "uso" ## [88] "innovador" "de" "paquetes" ## [91] "existentes" "charlas" "invitadas" ## [94] "desarrollo" "de" "nuevos" ## [97] "paquetes" "charlas" "contribuidas" ## [100] "uso" "en" "la" ## [103] "enseñanza" "demos" "análisis" ## [106] "reproducible" "de" "datos" ## [109] "posters" "análisis" "de" ## [112] "grandes" "datos" "aprendizaje" ## [115] "automático" "visualización" "de" ## [118] "datos" "análisis" "de" ## [121] "datos" "abiertos" "organizan" ## [124] "fechas" "importantes" "información" ## [127] "fecha" "límite" "para" ## [130] "la" "recepción" "de" ## [133] "conectar" "ucr.ac.cr" "trabajos" ## [136] "20" "de" "agosto" ## [139] "del" "2018" "info.conectar2019" ## [142] "gmail.com" "notificación" "aceptación" ## [145] "facebook" "https" "www.facebook.com" ## [148] "conectar2019" "1ero" "de" ## [151] "noviembre" "del" "2018" ## [154] "twitter" "conectar2019" "recepción" ## [157] "de" "versiones" "finales" ## [160] "e" "hashtag" "conectar2019" ## [163] "profesionalesr" "inscripción" "de" ## [166] "autores" "15" "de" ## [169] "noviembre" "del" "2018" ``` --- # Poster de ConectaR _.small[pdftools, tokenizers]_ ```r tibble::tibble(word = words) %>% dplyr::count(word, sort = TRUE) ``` ``` ## # A tibble: 110 x 2 ## word n ## <chr> <int> ## 1 de 21 ## 2 la 9 ## 3 del 6 ## 4 en 5 ## 5 datos 4 ## 6 uso 4 ## 7 2018 3 ## 8 análisis 3 ## 9 conectar2019 3 ## 10 conferencia 3 ## # … with 100 more rows ``` --- # Clima en San José _.small[opencage, GSODR]_ -- ```r library("opencage") ucr <- opencage::opencage_forward("San Jose", countrycode = "CR", limit = 1)$results stations <- GSODR::nearest_stations(LAT = ucr$geometry.lat, LON = ucr$geometry.lng, distance = 25) tiempo <- GSODR::get_GSOD(years = 1988:2019, station = stations) tiempo <- dplyr::mutate(tiempo, date = lubridate::ymd(tiempo$YEARMODA)) ``` --- # Clima en San José _.small[opencage, GSODR]_ ```r str(tiempo) ``` ``` ## Classes 'tbl_df', 'tbl' and 'data.frame': 20333 obs. of 49 variables: ## $ USAF : chr "787620" "787620" "787620" "787620" ... ## $ WBAN : chr "99999" "99999" "99999" "99999" ... ## $ STNID : chr "787620-99999" "787620-99999" "787620-99999" "787620-99999" ... ## $ STN_NAME : chr "JUAN SANTAMARIA INTL" "JUAN SANTAMARIA INTL" "JUAN SANTAMARIA INTL" "JUAN SANTAMARIA INTL" ... ## $ CTRY : chr "CS" "CS" "CS" "CS" ... ## $ STATE : chr NA NA NA NA ... ## $ CALL : chr "MROC" "MROC" "MROC" "MROC" ... ## $ LAT : num 9.99 9.99 9.99 9.99 9.99 ... ## $ LON : num -84.2 -84.2 -84.2 -84.2 -84.2 ... ## $ ELEV_M : num 921 921 921 921 921 ... ## $ ELEV_M_SRTM_90m : num 909 909 909 909 909 909 909 909 909 909 ... ## $ BEGIN : int 19550704 19550704 19550704 19550704 19550704 19550704 19550704 19550704 19550704 19550704 ... ## $ END : int 20181216 20181216 20181216 20181216 20181216 20181216 20181216 20181216 20181216 20181216 ... ## $ YEARMODA : Date, format: "1988-01-01" "1988-01-02" ... ## $ YEAR : chr "1988" "1988" "1988" "1988" ... ## $ MONTH : chr "01" "01" "01" "01" ... ## $ DAY : chr "01" "02" "03" "04" ... ## $ YDAY : num 1 2 3 4 5 6 7 8 9 10 ... ## $ TEMP : num 25.3 22.8 23.6 23.5 23.4 23.3 22.8 23.8 23.5 22.9 ... ## $ TEMP_CNT : int 14 15 13 22 13 14 17 20 14 10 ... ## $ DEWP : num 16.2 17.6 16.2 15.1 14.7 14.8 14.9 15.3 14.8 14.9 ... ## $ DEWP_CNT : int 14 15 13 22 13 14 17 20 14 10 ... ## $ SLP : num 1011 1011 1011 1011 NA ... ## $ SLP_CNT : int 4 5 5 5 0 5 6 7 5 6 ... ## $ STP : num 910 910 909 910 910 ... ## $ STP_CNT : int 14 15 13 22 13 14 17 20 14 10 ... ## $ VISIB : num 13.4 13.5 14.3 13 12.4 13.2 13.7 13.8 13.7 15.9 ... ## $ VISIB_CNT : int 14 15 13 21 13 14 17 20 14 10 ... ## $ WDSP : num 10 6 7.6 7.3 9.6 11 7.5 6.3 7.3 6.9 ... ## $ WDSP_CNT : int 14 14 13 22 13 14 17 20 13 10 ... ## $ MXSPD : num 12.9 10.3 10.3 9.3 12.9 15.4 12.4 8.2 10.3 10.3 ... ## $ GUST : num 20.6 15.4 15.4 18 20.6 25.7 17.5 15.4 15.4 13.4 ... ## $ MAX : num 28 29.2 29.8 28.8 28.2 27.3 28.2 28.2 30 29.6 ... ## $ MAX_FLAG : chr NA NA NA NA ... ## $ MIN : num 20.4 19 19 19 19.6 20 18 18.2 18.3 16.8 ... ## $ MIN_FLAG : chr NA NA NA NA ... ## $ PRCP : num 0 0 0 0 0 0 0 0 0 0 ... ## $ PRCP_FLAG : chr "A" "C" "C" "C" ... ## $ SNDP : num NA NA NA NA NA NA NA NA NA NA ... ## $ I_FOG : int 0 0 0 0 0 0 0 0 0 0 ... ## $ I_RAIN_DRIZZLE : int 0 0 0 0 0 0 0 0 0 0 ... ## $ I_SNOW_ICE : int 0 0 0 0 0 0 0 0 0 0 ... ## $ I_HAIL : int 0 0 0 0 0 0 0 0 0 0 ... ## $ I_THUNDER : int 0 0 0 0 0 0 0 0 0 0 ... ## $ I_TORNADO_FUNNEL: int 0 0 0 0 0 0 0 0 0 0 ... ## $ EA : num 1.8 2 1.8 1.7 1.7 1.7 1.7 1.7 1.7 1.7 ... ## $ ES : num 3.2 2.8 2.9 2.9 2.9 2.9 2.8 2.9 2.9 2.8 ... ## $ RH : num 56.2 71.4 62.1 58.6 58.6 58.6 60.7 58.6 58.6 60.7 ... ## $ date : Date, format: "1988-01-01" "1988-01-02" ... ``` --- # Clima en San José _.small[opencage, GSODR]_ ```r library("ggplot2") ggplot(tiempo, aes(date, TEMP, col = STN_NAME)) + geom_point(size = 0.1, alpha = 0.3) + geom_smooth() + colorblindr::scale_color_OkabeIto() + theme(legend.position = "bottom") + hrbrthemes::theme_ipsum(base_size = 12, axis_title_size = 12, axis_text_size = 12) ``` --- # Clima en San José _.small[opencage, GSODR]_ <img src="index_files/figure-html/clima-image-1.png" style="display: block; margin: auto;" /> --- # El Yigüirro _.small[rgbif]_ -- ```r birds <- rgbif::occ_data(scientificName = "Turdus grayi", limit = 200000) ``` ```r birds <- birds$data birds <- dplyr::filter(birds, basisOfRecord == "HUMAN_OBSERVATION") dim(birds) ``` ``` ## [1] 149152 150 ``` --- # El Yigüirro _.small[rgbif]_ ```r birds %>% dplyr::mutate(year = lubridate::year(eventDate)) %>% ggplot() + geom_bar(aes(year)) + hrbrthemes::theme_ipsum(base_size = size, axis_title_size = size, axis_text_size = size) + ylab("No. of observations") + xlab("Time (years)") ``` --- # El Yigüirro _.small[rgbif]_ <img src="index_files/figure-html/yiguirro-cuando-1.png" style="display: block; margin: auto;" /> --- # El Yigüirro _.small[rgbif]_ ``` ## # A tibble: 10 x 2 ## country n ## <chr> <int> ## 1 Costa Rica 44681 ## 2 Mexico 24154 ## 3 United States of America 17166 ## 4 Panama 16917 ## 5 Honduras 16045 ## 6 Belize 9649 ## 7 Guatemala 9244 ## 8 El Salvador 5404 ## 9 Nicaragua 4458 ## 10 Colombia 1434 ``` --- class: part-slide, center, middle # Paquetes de rOpenSci 💁 --- # Paquetes de rOpenSci rOpenSci mantiene paquetes para -- * acceso a fuentes de datos de la web (`opencage`, `GSODR`, `rgbif`) -- * acceso a fuentes de datos... raras (PDF con `pdftools` y `tabulizer`, texto en imágenes con `tesseract`) -- * herramientas de flujo de trabajo (`drake`, `gistr`) -- * ¡y mucho más para facilitar su trabajo científico! https://ropensci.org/packages/ --- # Paquetes de rOpenSci https://ropensci.org/packages/ <img src="index_files/figure-html/webshot_pkgs-2.png" style="display: block; margin: auto;" /><img src="index_files/figure-html/webshot_pkgs-1.png" width="1296" style="display: block; margin: auto;" /> --- # Paquetes de rOpenSci <img src="index_files/figure-html/webshot_pkgs2-2.png" style="display: block; margin: auto;" /><img src="index_files/figure-html/webshot_pkgs2-1.png" width="1296" style="display: block; margin: auto;" /> --- # Recopilar _metadatos_ de paquetes Fuentes de metadatos de los paquetes: * DESCRIPTION * insignias (badges) en el README * Temas de repositorio GitHub --- # Metadatos de paquetes Temas de repositorio GitHub <img src="index_files/figure-html/topics-1.png" width="1284" style="display: block; margin: auto;" /> --- # Metadatos de paquetes DESCRIPTION <img src="index_files/figure-html/description-1.png" width="1284" style="display: block; margin: auto;" /> --- # Metadatos de paquetes Insignias en el README (de GitHub) <img src="index_files/figure-html/readme-1.png" width="1323" style="display: block; margin: auto;" /> --- # Recopilar _metadatos_ de paquetes Recopilación con `codemetar`. * CodeMeta, estándar de metadatos de software científico. Extensión de términos de schema.org. * JSON! 😍 JSON**-LD** 😮 * `codemetar` especializado en metadatos de paquetes R. --- # codemeta.json ```json { "@context": [ "https://doi.org/10.5063/schema/codemeta-2.0", "http://schema.org" ], "@type": "SoftwareSourceCode", "identifier": "restez", "description": "Download large sections of\n 'GenBank' <https://www.ncbi.nlm.nih.gov/genbank/> and generate a local\n SQL-based database. A user can then query this database using 'restez'\n functions or through 'rentrez' <https://CRAN.R-project.org/package=rentrez>\n wrappers.", "name": "restez: Create and Query a Local Copy of 'GenBank' in R", "codeRepository": "https://github.com/ropensci/restez#readme", "issueTracker": "https://github.com/ropensci/restez/issues", "license": "https://spdx.org/licenses/MIT", "version": "1.0.0", "programmingLanguage": { "@type": "ComputerLanguage", "name": "R", "version": "3.5.1", "url": "https://r-project.org" }, "runtimePlatform": "R version 3.5.1 (2018-07-02)", "author": [ { "@type": "Person", "givenName": "Dom", "familyName": "Bennett", "email": "dominic.john.bennett@gmail.com", "@id": "https://orcid.org/0000-0003-2722-1359" } ``` --- # codemeta.json Palabras claves ```json ], "keywords": [ "genbank", "dna", "sequence", "entrez", "r", "r-package", "rstats" ], ``` --- # codemeta.json Revisión por pares ```json "review": { "@type": "Review", "url": "https://github.com/ropensci/onboarding/issues/232", "provider": "http://ropensci.org" }, ``` --- # Registro de paquetes de rOpenSci Cada día, * _clone_ de todos los repositorios de github.com/ropensci y github.com/ropenscilabs. * Paquetes = DESCRIPTION + NAMESPACE + man/ + R/ * Creación de codemeta.json * Asimilación de todos los codemeta.json --- # Registro de paquetes de rOpenSci JSON + JS DataTables = https://ropensci.org/packages/ <img src="index_files/figure-html/pkgspage-1.png" style="display: block; margin: auto;" /> --- class: part-slide, center, middle # Evaluar (y mejorar) paquetes 🕵️♀️ --- # ¿Por qué evaluar paquetes? ¿Merece la pena aprender a utilizar este paquete? ¿Hay pruebas de que sus resultados son corectos? -- <blockquote class="twitter-tweet" data-lang="es"><p lang="es" dir="ltr">If you use software that lacks automated tests, you are the tests.</p>— Jenny Bryan (@JennyBryan) <a href="https://twitter.com/JennyBryan/status/1043307291909316609?ref_src=twsrc%5Etfw">22 de setembre de 2018</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> --- # ¿Cómo evaluar un paquete? * ¿Es activo su desarrollo? * ¿Tiene tests? * ¿Tiene buena documentación? * ¿Es popular? * ¿Está desarrollado por personas u organizaciones confiables? --- # ¿Cómo evaluar paquetes? Los paquetes de R son como ranas de cristal. <img src="index_files/figure-html/ranas-1.png" width="400" style="display: block; margin: auto;" /> .font50[Guayasamin JM, Cisneros-Heredia DF, Maynard RJ, Lynch RL, Culebras J, Hamilton PS - https://zookeys.pensoft.net/article/12108/element/7/hyalinobatrachium-pellucidum/ [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)] --- # Calidad de los paquetes de rOpenSci * Paquetes desarrollados por quienes trabajamos en rOpenSci o por la comunidad * ¡Sistema de revisión de paquetes! --- # rOpenSci Software Peer Review Revisiones abiertas de paquetes R. -- * favorecer el uso de buenas prácticas y estándares -- * crear una "comunidad de práctica" -- * colaboración con el _Journal of Open Source Software_ y _Methods in Ecology and Evolution_ --- # ¿Qué mirar en ~~ranas~~ paquetes? -- _.small[Jeff Leek @jtleek]_ ```r magick::image_read("https://raw.github.com/jtleek/rpackages/master/documentation.png") ``` <img src="index_files/figure-html/unnamed-chunk-1-1.png" style="display: block; margin: auto;" /> --- # Criterios de revisión * Licencia compatible con la Open-source initiative (OSI) * Documentación completa * Buena cobertura de tests * Código legible * Usabilidad -- [ropensci.github.io/dev_guide/](https://ropensci.github.io/dev_guide/) --- # Nota al margen: Su 📦 R -- ¡Adiós `source("myfunctions.R")`, hola `library("mypkg")`! -- * ¡Al menos para su yo futuro! * Cada vez más fácil con herramientas automáticas Listas de recursos * https://masalmon.eu/2017/12/11/goodrpackages/ * https://ropensci.github.io/dev_guide/contributingguide.html#prerequisites-for-package-development --- # ¿Cómo revisar? -- * De manera _abierta_ y no _contenciosa_ -- * Sin rechazo -- * Procedimiento constructivo para todas las personas involucradas -- * Utilizando la infraestructura de GitHub --- # rOpenSci Software Peer Review <img src="index_files/figure-html/onboarding-repo-1.png" width="1401" style="display: block; margin: auto;" /> --- # The issues tracker <img src="index_files/figure-html/onboarding-issues-tracker-1.png" width="1401" style="display: block; margin: auto;" /> --- # Proponer un paquete <img src="index_files/figure-html/onboarding-submission-1.png" width="1336" style="display: block; margin: auto;" /> --- # Proponer un paquete <img src="index_files/figure-html/onboarding-submission2-1.png" width="1401" style="display: block; margin: auto;" /> --- # Proponer un paquete <img src="index_files/figure-html/onboarding-submission3-1.png" width="1401" style="display: block; margin: auto;" /> --- # Proponer un paquete <img src="index_files/figure-html/onboarding-submission4-1.png" width="1401" style="display: block; margin: auto;" /> --- # No rechazos, pero... Solo aceptamos paquetes dedicados a ciertos temas. https://ropensci.github.io/dev_guide/policies.html#aims-and-scope -- * nuestras categorías: _data retrieval, data extraction, database access, data munging, data deposition, reproducibility, geospatial data, text analysis._ -- * aplicación en **ciencia** -- * deben mejorar paquetes similares ya existentes -- Si tienen dudas, ¡_pre-submission inquiry_! --- # Pre-submission inquiry? <img src="index_files/figure-html/presubchoice-1.png" width="1401" style="display: block; margin: auto;" /> --- # Pre-submission inquiry? <img src="index_files/figure-html/presubtemplate-1.png" width="1401" style="display: block; margin: auto;" /> --- # El procedimiento de revisión <img src="index_files/figure-html/onboarding-whole-thread-1.png" width="100" style="display: block; margin: auto;" /> --- # Chequeos de quienes editamos <img src="index_files/figure-html/onboarding-editor-1.png" width="350" style="display: block; margin: auto;" /> --- # El procedimiento de revisión Dos revisores. Discusión continua hasta la aprobación. -- A menudo un artículo de blog https://ropensci.org/tags/software-peer-review/ --- class: part-slide, center, middle # Otros recursos de rOpenSci 💎 --- # Blogs * [ropensci.org/blog](https://ropensci.org/blog) * artículos más cortos o (aún) más técnicos [ropensci.org/technotes](https://ropensci.org/technotes) Para encontrar contenido del mismo tipo a la vez * [ropensci.org/archive](https://ropensci.org/archive) * [ropensci.org/tags](https://ropensci.org/tags) * [ropensci.org/authors](https://ropensci.org/authors) --- # Blogs ¿Por qué leer artículos de nuestros blogs, y en general, nuestro contenido? * Conocer lo que hay disponible * Inspirarse * Solucionar problemas presentes o futuros --- # Community calls ¡Una hora con telepresentaciones y oportunidades de hacer preguntas antes/durante/después del evento! ☎️ ¡Ahora todos los meses! 🎉 Horario variable, casi siempre bueno para América Latina. 😉 [ropensci.org/commcalls](https://ropensci.org/commcalls) --- # Dos organizaciones en GitHub * [github.com/ropensci](https://github.com/ropensci/) * [github.com/ropenscilabs](https://github.com/ropenscilabs/) para cosas más experimentales -- <blockquote class="twitter-tweet" data-lang="ca"><p lang="en" dir="ltr">Just spent some time browsing through the 361 <a href="https://twitter.com/rOpenSci?ref_src=twsrc%5Etfw">@rOpenSci</a> repositories. I would highly recommend taking a few minutes to get inspired by all the great projects! <a href="https://t.co/Se8wA6MpsJ">https://t.co/Se8wA6MpsJ</a></p>— Johannes J. Müller (@jj_mllr) <a href="https://twitter.com/jj_mllr/status/1027284412571045888?ref_src=twsrc%5Etfw">8 d’agost de 2018</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> --- class: part-slide, center, middle # ¿Cómo participar en rOpenSci? 🙆 --- # Informarse Para conocer nuestras últimas noticias * Twitter https://twitter.com/rOpenSci * Newsletter [news.ropensci.org](https://news.ropensci.org/) --- # Preguntar y discutir ¡Tenemos un forum! [discuss.ropensci.org/](https://discuss.ropensci.org/) Desarollar paquetes, poner licencias a datos, hacer ciencia reproducible... --- # Participar desarrollando paquetes * Envíen o revisen paquetes [ropensci.org/software-review](https://ropensci.org/software-review) * Participen en el desarrollo de paquetes. Guía: https://ropensci.github.io/dev_guide/contributingguide.html --- class: part-slide, center, middle # ¡Gracias! 🤗 --- # ¡Gracias! A quienes organizan ConectaR, en particular Marcela Alfaro Córdoba, por la invitación y la flexibilidad. A Laura Ación por sus comentarios. ¡Y a todas las personas presentes! <div style="width:100%;height:0;padding-bottom:146%;position:relative;"><iframe src="https://giphy.com/embed/RdHS0YSOnEkGGoVG1O" width="40%" height="40%" style="position:absolute" frameBorder="0" class="giphy-embed" allowFullScreen></iframe></div><p><a href="https://giphy.com/gifs/greetingsisland-cute-dog-RdHS0YSOnEkGGoVG1O">via GIPHY</a></p> --- # Meta * Diapositivas hechas con [`xaringan`](https://github.com/yihui/xaringan) * Capturas de pantallas con [`webshot`](https://github.com/wch/webshot) y [`magick`](https://github.com/ropensci/magick) _ropensci/magick_ * Emojis añadidos con [`emo`](https://github.com/hadley/emo) * Iconos añadidos con [`icon`](https://github.com/ropenscilabs/icon) _ropenscilabs/icon_ --- # ¡Gracias! https://tiny.cc/conectar [<i class="fab fa-twitter "></i>](https://twitter.com/ma_salmon) ma_salmon [<i class="fab fa-github "></i>](https://github.com/maelle) maelle [<i class="fa fa-bookmark "></i>](https://masalmon.eu) masalmon.eu [<i class="fab fa-twitter "></i>](https://twitter.com/rOpenSci) rOpenSci [<i class="fab fa-github "></i>](https://github.com/ropensci) ropensci [<i class="fa fa-bookmark "></i>](https://ropensci.org) ropensci.org <iframe src="https://giphy.com/embed/26FPzWY5I6WqElJC0" width="480" height="330" frameBorder="0" class="giphy-embed" allowFullScreen></iframe><p><a href="https://giphy.com/gifs/birthday-happy-birthday-box-gift-26FPzWY5I6WqElJC0">via GIPHY</a></p>