Exercicios

função fatorial

fat <- function(x) {
  if (x < 0 | ((x - as.integer(x)) != 0)) {         
    return("entre somente com número natual")    
  } else if (x > 0) { 
   prod <- 1          
   for (i in 1:x) {   
      prod <- prod*i  
   }
  } else {            
    prod <- 1         
  }
  return(prod)        
}
save(fat, file = "fat.Rdata") # cria/salva o arquivo com  a funcao fat
rm(fat)                       # remove a funcao fat do environment do R
load("fat.Rdata")             # carrega o arquivo com a funcao fat "fat.Rdata"
# exemplo com número zero
fat(0)
## [1] 1
# exemplo com n positivo
fat(2)
## [1] 2
# exemplo com n fracionário
fat(0.5)
## [1] "entre somente com número natual"
# exemplo com número negativo e fracionário
fat(-3.5)
## [1] "entre somente com número natual"
library(MASS)
library(ggplot2)
data(survey)
csurvey <- na.omit(survey)
head(csurvey)
##      Sex Wr.Hnd NW.Hnd W.Hnd    Fold Pulse  Clap Exer Smoke Height
## 1 Female   18.5   18.0 Right  R on L    92  Left Some Never 173.00
## 2   Male   19.5   20.5  Left  R on L   104  Left None Regul 177.80
## 5   Male   20.0   20.0 Right Neither    35 Right Some Never 165.00
## 6 Female   18.0   17.7 Right  L on R    64 Right Some Never 172.72
## 7   Male   17.7   17.7 Right  L on R    83 Right Freq Never 182.88
## 8 Female   17.0   17.3 Right  R on L    74 Right Freq Never 157.00
##        M.I    Age
## 1   Metric 18.250
## 2 Imperial 17.583
## 5   Metric 23.667
## 6 Imperial 21.000
## 7 Imperial 18.833
## 8   Metric 35.833
# 2.a.

  # 2.a.i. 
    dist <- csurvey$Wr.Hnd
    boxplot(dist)

  # 2.a.ii.
    # a conclusao é que a média da distância da mão é menor para a as mulheres
    sex <- csurvey$Sex
    boxplot(dist ~ sex)

# 2.b.
    ggplot(csurvey, aes(x = Sex, y = Wr.Hnd)) + geom_boxplot()

library(datasets)
data(WorldPhones)
head(WorldPhones)
##      N.Amer Europe Asia S.Amer Oceania Africa Mid.Amer
## 1951  45939  21574 2876   1815    1646     89      555
## 1956  60423  29990 4708   2568    2366   1411      733
## 1957  64721  32510 5230   2695    2526   1546      773
## 1958  68484  35218 6662   2845    2691   1663      836
## 1959  71799  37598 6856   3000    2868   1769      911
## 1960  76036  40341 8220   3145    3054   1905     1008
# 3a.
wp <- WorldPhones

(media <- apply(wp, 2, mean)) # calcula a media de cada coluna do data frame wp (para indicar a coluna usar o # 2)
##     N.Amer     Europe       Asia     S.Amer    Oceania     Africa 
## 66747.5714 34343.4286  6229.2857  2772.2857  2625.0000  1484.0000 
##   Mid.Amer 
##   841.7143
(mediana <- apply(wp, 2, median))
##   N.Amer   Europe     Asia   S.Amer  Oceania   Africa Mid.Amer 
##    68484    35218     6662     2845     2691     1663      836
(desvio <- apply(wp, 2, sd))
##     N.Amer     Europe       Asia     S.Amer    Oceania     Africa 
## 11277.4625  7195.6169  2124.2146   496.6876   523.0631   647.7070 
##   Mid.Amer 
##   176.1247
# 3b.
max_media <- apply(data.frame(media), 2, max) 
media[media == max_media]  # North America
##   N.Amer 
## 66747.57
min_media <- apply(data.frame(media), 2, min) 
media[media == min_media] # Middle America
## Mid.Amer 
## 841.7143
v <- c(0, 5, 12, 6, 24, 10, 2, 5, 19, 21)
# 4.a
mean(v)
## [1] 10.4
# 4.b
median(v)
## [1] 8
# 4.c
var(v)
## [1] 70.04444
# 4.d
sd(v)
## [1] 8.369256
# 4.e
quantile(v, probs = seq(0.25, 0.75, by = 0.25))
##   25%   50%   75% 
##  5.00  8.00 17.25
imc <- function(peso, altura) {
  return(peso/(altura^2))
}

peso <- c(78, 56, 49, 89, 95, 67, 53, 85, 96, 103)
altura  <-  c(1.67, 1.60, 1.70, 1.92, 1.80, 1.71, 1.65, 1.82, 1.76, 1.70)

imc(peso, altura)
##  [1] 27.96802 21.87500 16.95502 24.14280 29.32099 22.91303 19.46740
##  [8] 25.66115 30.99174 35.64014