1 of 19

Iteración con el paquete purrr

para automatizar el manejo de archivos

2 of 19

  1. Obtener un único dataframe de importar múltiples archivos
  2. Automatizar la generación de reportes

3 of 19

  • Obtener un único dataframe de importar múltiples archivos
  • Automatizar la generación de reportes

4 of 19

Importar múltiples archivos

map_df(.x = , .f = read_csv)

1. Genera un vector/lista con los nombres de archivos sobre los que te gustaría operar

5 of 19

Importar múltiples archivos

map_df(.x = , .f = read_csv)

2. Selecciona la función para leer los archivos

3. Chequea sus argumentos

4. Seleciona entre map()/map2()/pmap()

6 of 19

Valor de retorno: un dataframe

map_df(.x = , .f = read_csv)

5. Selecciona el sufijo de map en relación con el output esperado

7 of 19

purrr::map( ) Let’s practise

______( 1:3, typeof)

[[1]]

[1] "integer"

[[2]]

[1] "integer"

[[3]]

[1] "integer"

Which map() function would you use to obtain these return values?

______( mtcars, typeof)

______( 1:3, is.numeric)

[1] TRUE TRUE TRUE

______(1:3, typeof)

[1] “integer” “integer” “integer”

______(1:3, is.numeric)

[[1]]

[1] TRUE

[[2]]

[1] TRUE

[[3]]

[1] TRUE

A

B

C

1 map() 2 map_df() 3 map_chr()

8 of 19

Leer múltiples archivos demo #1

1. Generar un vector con los nombres de archivo sobre los cuales iterar

2. Selecciona una función para importar los archivos

3. Chequea el nro de argumentos que la función necesita

4. Seleccioná entre map()/map2()/pmap()

5. Seleccioná el sufijo de map_*() en relación a la salida esperada

9 of 19

  • Obtener un único dataframe de importar múltiples archivos
  • Automatizar la generación de reportes

10 of 19

  • Obtain a dataframe from multiple files
  • Automatize report generation

11 of 19

Iterar usando una función por sus efectos laterales

guardar muchos archivos

obtener varios puntos

imprimir en pantalla un gran número de resultados

12 of 19

Familia de funciones purrr::walk()

walk(.l, .f, ...)

una lista de vectores

La longitud de .l determina el numero de argumentos con los que .f será llamada.

Funcion

Fórmula

Vector atómico.

13 of 19

Practiquemos

¿Cuál de estas funciones usarias con una función de la familia de walk()?

  1. purrr::safely()
  2. ~ggplot(., aes(mpg, wt)) + geom_point()
  3. rmarkdown::render()
  4. ~list(name = .)

¿Podes explicar por qué elegiste map() o walk() para iterar entre estas funciones?

14 of 19

Generación de reportes con RMarkdown

15 of 19

Automatización de la generación de reportes

Plantilla.Rmd

yaml

chunk

Lista de parámetros

  • rojo
  • verde
  • azul
  • amarillo

rep_azul.html

rep_verde.html

rep_rojo.html

rep_amarillo.html

16 of 19

Automatización de la generación de reportes

¡Generá diferentes reportes!

purrr::pwalk(rmarkdown::render,

input = "Template.Rmd"

output_files =

params = )

“rep_amarillo.html”

“rep_rojo.html”

Lista de parámetros

  • rojo
  • verde
  • azul
  • amarillo

“rep_azul.html” ...

17 of 19

Automatización de la generación de reportes demo#2

Archivo RMarkdown -> agregar parámetros en el YAML (.Rmd) y en el código

YAML

CHUNK

18 of 19

Practiquemos

How would you modify this list for automatizing RMarkdown report generation?

Can you explain the changes?

1. Generar un vector con los nombres de archivo sobre los cuales iterar

2. Selecciona una función para importar los archivos

3. Chequea el nro de argumentos que la función necesita

4. Seleccioná entre map()/map2()/pmap()

5. Seleccioná el sufijo de map_*() en relación a la salida esperada

19 of 19

Muchas gracias