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