+ - 0:00:00
Notes for current slide
Notes for next slide

Mejores paquetes de R, mejor ciencia

Maëlle Salmon
ma_salmon maelle masalmon.eu

2018/01/25

1 / 69

Mis objetivos hoy

2 / 69

Mis objetivos hoy

  • Presentar a rOpenSci, inspirarles a
    • utilizar nuestros paquetes
    • participar en el proyecto
2 / 69

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
2 / 69

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

2 / 69

¿Quiénes somos? 👋

3 / 69

Quién soy yo (Maëlle, Ma-El)

4 / 69

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

5 / 69

Mi lugar en la comunidad de R

  • 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

6 / 69

¿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

7 / 69

¿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

7 / 69

Ejemplos 🤹

8 / 69

Poster de ConectaR pdftools, tokenizers

9 / 69

Poster de ConectaR pdftools, tokenizers

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

9 / 69

Poster de ConectaR pdftools, tokenizers

cld2::detect_language(text)
## [1] "es"
cld3::detect_language(text)
## [1] "es"
10 / 69

Poster de ConectaR pdftools, tokenizers

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"
11 / 69

Poster de ConectaR pdftools, tokenizers

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
12 / 69

Clima en San José opencage, GSODR

13 / 69

Clima en San José opencage, GSODR

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))
13 / 69

Clima en San José opencage, GSODR

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" ...
14 / 69

Clima en San José opencage, GSODR

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)
15 / 69

Clima en San José opencage, GSODR

16 / 69

El Yigüirro rgbif

17 / 69

El Yigüirro rgbif

birds <- rgbif::occ_data(scientificName = "Turdus grayi",
limit = 200000)
birds <- birds$data
birds <- dplyr::filter(birds,
basisOfRecord == "HUMAN_OBSERVATION")
dim(birds)
## [1] 149152 150
17 / 69

El Yigüirro rgbif

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)")
18 / 69

El Yigüirro rgbif

19 / 69

El Yigüirro 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
20 / 69

Paquetes de rOpenSci 💁

21 / 69

Paquetes de rOpenSci

rOpenSci mantiene paquetes para

22 / 69

Paquetes de rOpenSci

rOpenSci mantiene paquetes para

  • acceso a fuentes de datos de la web (opencage, GSODR, rgbif)
22 / 69

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)

22 / 69

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)
22 / 69

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/

22 / 69

Paquetes de rOpenSci

https://ropensci.org/packages/

23 / 69

Paquetes de rOpenSci

24 / 69

Recopilar metadatos de paquetes

Fuentes de metadatos de los paquetes:

  • DESCRIPTION

  • insignias (badges) en el README

  • Temas de repositorio GitHub

25 / 69

Metadatos de paquetes

Temas de repositorio GitHub

26 / 69

Metadatos de paquetes

DESCRIPTION

27 / 69

Metadatos de paquetes

Insignias en el README (de GitHub)

28 / 69

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.

29 / 69

codemeta.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"
}
30 / 69

codemeta.json

Palabras claves

],
"keywords": [
"genbank",
"dna",
"sequence",
"entrez",
"r",
"r-package",
"rstats"
],
31 / 69

codemeta.json

Revisión por pares

"review": {
"@type": "Review",
"url": "https://github.com/ropensci/onboarding/issues/232",
"provider": "http://ropensci.org"
},
32 / 69

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

33 / 69

Registro de paquetes de rOpenSci

JSON + JS DataTables = https://ropensci.org/packages/

34 / 69

Evaluar (y mejorar) paquetes 🕵️‍♀️

35 / 69

¿Por qué evaluar paquetes?

¿Merece la pena aprender a utilizar este paquete?

¿Hay pruebas de que sus resultados son corectos?

36 / 69

¿Por qué evaluar paquetes?

¿Merece la pena aprender a utilizar este paquete?

¿Hay pruebas de que sus resultados son corectos?

36 / 69

¿Cómo evaluar un paquete?

  • ¿Es activo su desarrollo?

  • ¿Tiene tests?

  • ¿Tiene buena documentación?

  • ¿Es popular?

  • ¿Está desarrollado por personas u organizaciones confiables?

37 / 69

¿Cómo evaluar paquetes?

Los paquetes de R son como ranas de cristal.

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

38 / 69

Calidad de los paquetes de rOpenSci

  • Paquetes desarrollados por quienes trabajamos en rOpenSci o por la comunidad

  • ¡Sistema de revisión de paquetes!

39 / 69

rOpenSci Software Peer Review

Revisiones abiertas de paquetes R.

40 / 69

rOpenSci Software Peer Review

Revisiones abiertas de paquetes R.

  • favorecer el uso de buenas prácticas y estándares
40 / 69

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"

40 / 69

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

40 / 69

¿Qué mirar en ranas paquetes?

41 / 69

¿Qué mirar en ranas paquetes?

Jeff Leek @jtleek

magick::image_read("https://raw.github.com/jtleek/rpackages/master/documentation.png")

41 / 69

Criterios de revisión

  • Licencia compatible con la Open-source initiative (OSI)

  • Documentación completa

  • Buena cobertura de tests

  • Código legible

  • Usabilidad

42 / 69

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/

42 / 69

Nota al margen: Su 📦 R

43 / 69

Nota al margen: Su 📦 R

¡Adiós source("myfunctions.R"), hola library("mypkg")!

43 / 69

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

43 / 69

¿Cómo revisar?

44 / 69

¿Cómo revisar?

  • De manera abierta y no contenciosa
44 / 69

¿Cómo revisar?

  • De manera abierta y no contenciosa

  • Sin rechazo

44 / 69

¿Cómo revisar?

  • De manera abierta y no contenciosa

  • Sin rechazo

  • Procedimiento constructivo para todas las personas involucradas

44 / 69

¿Cómo revisar?

  • De manera abierta y no contenciosa

  • Sin rechazo

  • Procedimiento constructivo para todas las personas involucradas

  • Utilizando la infraestructura de GitHub

44 / 69

rOpenSci Software Peer Review

45 / 69

The issues tracker

46 / 69

Proponer un paquete

47 / 69

Proponer un paquete

48 / 69

Proponer un paquete

49 / 69

Proponer un paquete

50 / 69

No rechazos, pero...

Solo aceptamos paquetes dedicados a ciertos temas.

https://ropensci.github.io/dev_guide/policies.html#aims-and-scope

51 / 69

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.
51 / 69

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

51 / 69

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

51 / 69

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!

51 / 69

Pre-submission inquiry?

52 / 69

Pre-submission inquiry?

53 / 69

El procedimiento de revisión

54 / 69

Chequeos de quienes editamos

55 / 69

El procedimiento de revisión

Dos revisores.

Discusión continua hasta la aprobación.

56 / 69

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/

56 / 69

Otros recursos de rOpenSci 💎

57 / 69

Blogs

Para encontrar contenido del mismo tipo a la vez

58 / 69

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

59 / 69

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

60 / 69

Dos organizaciones en GitHub

61 / 69

Dos organizaciones en GitHub

61 / 69

¿Cómo participar en rOpenSci? 🙆

62 / 69

Informarse

Para conocer nuestras últimas noticias

63 / 69

Preguntar y discutir

¡Tenemos un forum!

discuss.ropensci.org/

Desarollar paquetes, poner licencias a datos, hacer ciencia reproducible...

64 / 69

Participar desarrollando paquetes

65 / 69

¡Gracias! 🤗

66 / 69

¡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!

via GIPHY

67 / 69

Meta

  • Diapositivas hechas con xaringan

  • Capturas de pantallas con webshot y magick ropensci/magick

  • Emojis añadidos con emo

  • Iconos añadidos con icon ropenscilabs/icon

68 / 69

¡Gracias!

https://tiny.cc/conectar

ma_salmon maelle masalmon.eu

rOpenSci ropensci ropensci.org

via GIPHY

69 / 69

Mis objetivos hoy

2 / 69
Paused

Help

Keyboard shortcuts

, , Pg Up, k Go to previous slide
, , Pg Dn, Space, j Go to next slide
Home Go to first slide
End Go to last slide
Number + Return Go to specific slide
b / m / f Toggle blackout / mirrored / fullscreen mode
c Clone slideshow
p Toggle presenter mode
t Restart the presentation timer
?, h Toggle this help
Esc Back to slideshow