#############Ejemplo uso de pipes en R ###################
#ejemplo correponde al porcentaje de defoliación por un insecto plaga 
#Maiz, donde tiene un comportamiento de la forma d=(X+7)^1/2 donde x son los días 
# y d el porcetaje de defoliación
library(magrittr)
dia=c(5,10,15,20,30,40,50,100,150)  #días
c.plaga=function(x) sqrt(x+7) #comportamiento de la plaga
severidad=c.plaga(dia) #Datos de severidad en base a la defoliación
plot(dia,severidad,type = "l",xlab = "DDS",ylab = "% Defoliación",main = expression(paste("Severidad de ",italic("Spodoptera sp "), "en Maiz")), col="darkblue")

##### Ahora se realiza el anterior ejemplo pero con uso de pipes ####

library(magrittr) #primero activamos la libreria para acceder a los pipes
#posteriormente sin ayuda de funciones o guardar funciones se construye el grafico
dia %>% +7 %>% sqrt %>% plot(x=dia,type = "l",xlab = "DDS",ylab = "% Defoliación",main = "Severidad de Spodopter en Maiz",col="red")

###########################################################
### sin Pipes
dia <- seq(0,120, by = 15)# Se generan los dias correspondientes a la toma de muestra del daño causado en Maiz
Dias <- rep(dia, each = 3) # Se generan la secuencia de dias para ser asignados a las repeticiones de la toma de las muestras
daño <- sort(runif(length(Dias),0,.95))#se generan los datos de los daños del maiz aleatoriamente con el numero de observaciones tomadas especificando el minimo y su maximo, Los cuales son organizados con la función sort de menor a mayor
medias <- tapply(daño,Dias,mean)#Se cacula la media de las 3 mediciones de daño tomadas en maiz en un dia determinado
#Se realiza un grafico donde se mostraran los datos de las medias en funcion del tiempo.
plot(dia,medias, type="l",xlab = "Dias",ylab = "Daño (%)",col="blue",
     main = expression(paste("Avance de Daño causado por ",italic("Puccinia sorghi"), "en Maiz")),
     sub = list("Nota: Se gráfican los valores de las medias de tres mediciones", cex=.7))

### con pipes 
dia <- seq(0,120, by = 15)
Dias <- rep(dia, each = 3)
Daño <- runif(length(Dias),0,.95)
#se establce el pipe donde se toman una serie de datos y son ordenados de menor a mayor (sort), luego se calculan las medias segun el dia de la toma de la medición (tapply) y por último se reliza un grafico con los datos obtenidos de la anterior función
Daño %>% sort() %>% tapply(.,Dias,mean) %>% 
  plot(dia,.,type="l",xlab = "Dias",ylab = "Daño (%)",col="blue",
       main = expression(paste("Avance de Daño causado por ",italic("Puccinia sorghi "), "en Maiz")),
       sub = list("Nota: Se gráfican los valores de las medias de tres mediciones", cex=.7))