Advertisement
Guest User

Untitled

a guest
May 26th, 2018
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
R 1.80 KB | None | 0 0
  1. # Pacote {purrr}
  2.  
  3. # --------------------------------------------------
  4.  
  5. # Vamos ver mais um exemplo com um loop for
  6.  
  7. set.seed(123)
  8.  
  9. df <- data.frame(
  10.   a = rnorm(10),
  11.   b = rnorm(10),
  12.   c = rnorm(10),
  13.   d = rnorm(10)
  14. )
  15. df
  16.  
  17. mean(df$a)
  18. mean(df$b)
  19. mean(df$c)
  20. mean(df$d)
  21.  
  22. ncol(df)
  23.  
  24. medias <- vector("double", ncol(df))
  25. medias
  26.  
  27. for (i in seq_along(df)) {
  28.   medias [i]<-mean(df[,i])
  29. }
  30.  
  31. # Adotando uma linguagem funcional podemos escrever
  32.  
  33. col_mean <- function(df){
  34.   output <- vector("double", ncol(df))
  35.   for (i in seq_along(df)) {
  36.     output [i]<-mean(df[,i])
  37.   }
  38.   output
  39. }
  40.  
  41. col_mean(df)
  42.  
  43. # ... e da mesma forma para mediana (median) e desvio padrão (sd)
  44.  
  45. # -------------------------------------------------
  46.  
  47. # Outro exemplo de uma função criada por você
  48.  
  49. f <- function(x,i) (x - mean(x))^i
  50. x <- c(-5, 2, 7)                  
  51. f(x,3)
  52.  
  53.  # ------------------------------------------------------
  54.  
  55. # Funções map(), map_lgl(), map_int(), map_dbl() e map_chr() do pacote {purrr}
  56.  
  57. library(tidyverse)
  58.  
  59. df
  60.  
  61. map_dbl(df,mean)
  62. map_dbl(df,median)
  63. map_dbl(df,sd)
  64.  
  65. df %>% map_dbl(mean)
  66. df %>% map_dbl(median)
  67. df %>% map_dbl(sd)
  68.  
  69. f(map_dbl(x,mean),3)
  70. f(map_dbl(df,mean),3)
  71.  
  72. z <- list(x=1:3,y=4:5)
  73. z
  74. map_int(z,length)
  75.  
  76. ? mtcars
  77. head(mtcars)
  78.  
  79. unique(mtcars$cyl)
  80.  
  81. models <- mtcars %>%
  82.   split(mtcars$cyl) %>%
  83.   map(function(df) lm(mpg~wt, dat=df))
  84. models
  85.  
  86. class(models)
  87. map(models,2)
  88.  
  89. # ----------------------------------------------------
  90.  
  91. # Função map2() para dois argumentos
  92.  
  93. # Um só argumento: a média mu
  94.  
  95. mu <- list(5,10,-3)
  96. map(mu,rnorm,n=5)
  97. mu %>% map(rnorm,n=5)
  98.  
  99. # Dois argumentos: a média mu e o desvio padrão sigma
  100.  
  101. mu <- list(5,10,-3)
  102. sigma <- list(1,5,10)
  103. map2(mu,sigma,rnorm,n=5)
  104.  
  105. # Há ainda a função pmap() para múltiplos argumentos
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement