11 Funciones
Vamos a usar la siguiente base de datos.
- Cargamos librerias y leemos datos
# Cargamos librerias
if (!require('dplyr')) install.packages('dplyr'); library('dplyr')
if (!require('readr')) install.packages('readr'); library('readr')
# Leemos datos y echamos un vistazo
datos = read_csv("Data/09-Functions/Functions.csv")##
## ── Column specification ────────────────────────────────────────────────────────
## cols(
## ID = col_double(),
## Genero = col_double(),
## Edad = col_double(),
## Educacion = col_double(),
## FollowUP = col_double(),
## condition = col_character(),
## PPV_DECLARED = col_double()
## )
11.1 Creando mi primera función
Las funciones le añaden potencia y versatilidad a cualquier lenguaje de programación. Con ellas podemos automatizar tareas complicadas evitando duplicar codigo, o darle funcionalidad adicional a nuestros scripts. Para una introducción a la filosofia detras del Functional Programming, ver el capítulo homónimo del libro Advanced R.
11.1.1 Pirate plot original
Vimos que la función para graficar usando Pirate plot es la siguiente:
# Cargamos librería
if (!require('yarrr')) install.packages('yarrr'); library('yarrr')
pirateplot(formula = PPV_DECLARED ~ condition,
data = datos,
main = "PPV by condition",
avg.line.fun = median,
#theme.o = 2,
jitter.val = .2,
inf = "ci", #Show confidence interval (95%)
inf.f.o = 0.2, #Opacity of ci
pal = "appletv")## inf is depricated. Use inf.method instead
Ver la web del creador: Pirate plot
11.1.2 Nuestra función
Podemos crear una función propia para simplificar el código del Pirate Plot, manteniendo fijados aquellos parametros que queramos.
Creamos una función llamada Plot.me() que tiene los siguientes parámetros:
- Formula
- Datos
- Titulo (por defecto se usa Formula, pero se puede usar un valor arbitrario: “Gráfica linda”)
- Funcion (por defecto se usa mean, pero también se puede pedir median, etc.)
# Función Plot.me()
Plot.me <- function(Formula, Datos, Titulo = Formula, Funcion = mean) {
pirateplot(formula = Formula,
data = Datos,
main = Titulo,
avg.line.fun = Funcion,
#theme.o = 2,
jitter.val = .2,
inf = "ci", #Show confidence interval (95%)
inf.f.o = 0.2, #Opacity of ci
pal = "appletv")
}Usamos nuestra nueva función simplificada para crear algunas gráficas:
Plot.me(PPV_DECLARED ~ condition, datos)## inf is depricated. Use inf.method instead

Plot.me(PPV_DECLARED ~ Genero, datos)## inf is depricated. Use inf.method instead

Plot.me(PPV_DECLARED ~ Genero + condition, datos)## inf is depricated. Use inf.method instead

Podemos personalizar algunas cosas:
Plot.me(PPV_DECLARED ~ condition, datos, "Titulo lindo", median)## inf is depricated. Use inf.method instead
