definición de funciones

Crear una función llamada HolaMundo que imprima el texto “Hola mundo”

HolaMundo <- function(){
  print('Hola mundo')
}
HolaMundo()
[1] "Hola mundo"

Crear una función que devuelva la sumatoria de los números enteros comprendidos entre 1 y un parámetro x a definir.


suma_enteros <- function(x){
  
  sum(1:x)
}

suma_enteros(2)
[1] 3
suma_enteros(10)
[1] 55

Ejercicios sobre purrr

library(tidyverse)
── Attaching packages ──────────────────────────────────────────────────────────── tidyverse 1.2.1 ──
✔ ggplot2 3.2.1     ✔ purrr   0.3.2
✔ tibble  2.1.3     ✔ dplyr   0.8.3
✔ tidyr   1.0.0     ✔ stringr 1.4.0
✔ readr   1.3.1     ✔ forcats 0.4.0
── Conflicts ─────────────────────────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter()  masks stats::filter()
✖ purrr::is_null() masks testthat::is_null()
✖ dplyr::lag()     masks stats::lag()
✖ dplyr::matches() masks tidyr::matches(), testthat::matches()
library(purrr)

Ej 1 Para cada columna de mtcars, calcular la media. Devolver una lista

mtcars %>% 
  map(mean)
$mpg
[1] 20.09062

$cyl
[1] 6.1875

$disp
[1] 230.7219

$hp
[1] 146.6875

$drat
[1] 3.596563

$wt
[1] 3.21725

$qsec
[1] 17.84875

$vs
[1] 0.4375

$am
[1] 0.40625

$gear
[1] 3.6875

$carb
[1] 2.8125

Ej 2 Hacer lo mismo que en 1, pero devolver un vector nombrado

mtcars %>% 
  map_dbl(mean)
       mpg        cyl       disp         hp       drat         wt       qsec         vs         am 
 20.090625   6.187500 230.721875 146.687500   3.596563   3.217250  17.848750   0.437500   0.406250 
      gear       carb 
  3.687500   2.812500 

Ej 3 Calcular la media, pero podando el 5% de los valores más altos y bajos



mtcars %>% 
  map_dbl(function(x) mean(x,trim=0.05))
        mpg         cyl        disp          hp        drat          wt        qsec          vs 
 19.9533333   6.2000000 228.0000000 143.5666667   3.5800000   3.2005000  17.7920000   0.4333333 
         am        gear        carb 
  0.4000000   3.6666667   2.7000000 

Ej 4 Dividir el dataset de por la variable cyl como una lista y calcular el numero de filas por elemento de la lista

mtcars %>% 
  group_split(cyl) %>% 
  map(nrow)
[[1]]
[1] 11

[[2]]
[1] 7

[[3]]
[1] 14

Ej 5 Para cada elemento de la lista de 4, calcular la media de cada columna. Devolver los resultados como un dataframe con un registro por cada elemento de la lista (osea, 3)

mtcars %>% 
  group_split(cyl) %>% 
  map_df(.,function(x) map_df(x,mean))
LS0tCnRpdGxlOiBQcm9ncmFtYWNpb24gRnVuY2lvbmFsCm91dHB1dDoKICBodG1sX25vdGVib29rOgogICAgdG9jOiB5ZXMKICAgIHRvY19mbG9hdDogeWVzCmRhdGU6ICIiCnN1YnRpdGxlOiBQcsOhY3RpY2EgaW5kZXBlbmRpZW50ZSByZXN1ZWx0YQotLS0KCiMjIyBkZWZpbmljacOzbiBkZSBmdW5jaW9uZXMKCkNyZWFyIHVuYSAqKmZ1bmNpw7NuKiogbGxhbWFkYSBfSG9sYU11bmRvXyBxdWUgaW1wcmltYSBlbCB0ZXh0byAiSG9sYSBtdW5kbyIKCmBgYHtyfQpIb2xhTXVuZG8gPC0gZnVuY3Rpb24oKXsKICBwcmludCgnSG9sYSBtdW5kbycpCn0KSG9sYU11bmRvKCkKYGBgCgpDcmVhciB1bmEgKipmdW5jacOzbioqIHF1ZSBkZXZ1ZWx2YSBsYSBzdW1hdG9yaWEgZGUgbG9zIG7Dum1lcm9zIGVudGVyb3MgY29tcHJlbmRpZG9zIGVudHJlIDEgeSB1biBwYXLDoW1ldHJvIF94XyBhIGRlZmluaXIuCmBgYHtyfQoKc3VtYV9lbnRlcm9zIDwtIGZ1bmN0aW9uKHgpewogIAogIHN1bSgxOngpCn0KCnN1bWFfZW50ZXJvcygyKQpzdW1hX2VudGVyb3MoMTApCmBgYAoKCiMjIyBFamVyY2ljaW9zIHNvYnJlIHB1cnJyCgpgYGB7cn0KbGlicmFyeSh0aWR5dmVyc2UpCmxpYnJhcnkocHVycnIpCmBgYAoKX19FaiAxX18gUGFyYSBjYWRhIGNvbHVtbmEgZGUgbXRjYXJzLCBjYWxjdWxhciBsYSBtZWRpYS4gRGV2b2x2ZXIgdW5hIGxpc3RhCgpgYGB7cn0KbXRjYXJzICU+JSAKICBtYXAobWVhbikKCgpgYGAKCl9fRWogMl9fIEhhY2VyIGxvIG1pc21vIHF1ZSBlbiAxLCBwZXJvIGRldm9sdmVyIHVuIHZlY3RvciBub21icmFkbwoKYGBge3J9Cm10Y2FycyAlPiUgCiAgbWFwX2RibChtZWFuKQoKYGBgCgpfX0VqIDNfXyBDYWxjdWxhciBsYSBtZWRpYSwgcGVybyBwb2RhbmRvIGVsIDUlIGRlIGxvcyB2YWxvcmVzIG3DoXMgYWx0b3MgeSBiYWpvcwoKYGBge3J9CgoKbXRjYXJzICU+JSAKICBtYXBfZGJsKGZ1bmN0aW9uKHgpIG1lYW4oeCx0cmltPTAuMDUpKQpgYGAKCl9fRWogNF9fIERpdmlkaXIgZWwgZGF0YXNldCBkZSBwb3IgbGEgdmFyaWFibGUgY3lsIGNvbW8gdW5hIGxpc3RhIHkgY2FsY3VsYXIgZWwgbnVtZXJvIGRlIGZpbGFzIHBvciBlbGVtZW50byBkZSBsYSBsaXN0YQoKYGBge3J9Cm10Y2FycyAlPiUgCiAgZ3JvdXBfc3BsaXQoY3lsKSAlPiUgCiAgbWFwKG5yb3cpCgoKYGBgCgpfX0VqIDVfXyBQYXJhIGNhZGEgZWxlbWVudG8gZGUgbGEgbGlzdGEgZGUgXzRfLCBjYWxjdWxhciBsYSBtZWRpYSBkZSBjYWRhIGNvbHVtbmEuIERldm9sdmVyIGxvcyByZXN1bHRhZG9zIGNvbW8gdW4gZGF0YWZyYW1lIGNvbiB1biByZWdpc3RybyBwb3IgY2FkYSBlbGVtZW50byBkZSBsYSBsaXN0YSAob3NlYSwgMykKCmBgYHtyfQptdGNhcnMgJT4lIAogIGdyb3VwX3NwbGl0KGN5bCkgJT4lIAogIG1hcF9kZiguLGZ1bmN0aW9uKHgpIG1hcF9kZih4LG1lYW4pKQpgYGAKCg==