-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCap03-06-Funcoes.R
104 lines (72 loc) · 1.89 KB
/
Cap03-06-Funcoes.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
# Funções
# Obs: Caso tenha problemas com a acentuação, consulte este link:
# https://support.rstudio.com/hc/en-us/articles/200532197-Character-Encoding
# Configurando o diretório de trabalho
# Coloque entre aspas o diretório de trabalho que você está usando no seu computador
# Não use diretórios com espaço no nome
setwd("C:/FCD/BigDataRAzure/Cap03")
getwd()
# Help
?sample
args(sample)
args(mean)
args(sd)
# Funções Built-in
abs(-43)
sum(c(1:5))
mean(c(1:5))
round(c(1.1:5.8))
rev(c(1:5))
seq(1:5)
sort(rev(c(1:5)))
append(c(1:5), 6)
vec1 <- c(1.5, 2.5, 8.4, 3.7, 6.3)
vec2 <- rev(vec1)
vec2
# Funções dentro de funções
plot(rnorm(10))
mean(c(abs(vec1), abs(vec2)))
# Criando funções
myfunc <- function(x) { x + x }
myfunc(10)
class(myfunc)
myfunc2 <- function(a, b) {
valor = a ^ b
print(valor)
}
myfunc2(3, 2)
jogando_dados <- function() {
num <- sample(1:6, size = 1) #Local
num
}
jogando_dados()
# Escopo
print(num)
num <- c(1:6)
num #Global
# Funções sem número definido de argumentos
vec1 <- (10:13)
vec2 <- c("a", "b", "c", "d")
vec3 <- c(6.5, 9.2, 11.9, 5.1)
myfunc3 <- function(...){
df = data.frame(cbind(...))
print(df)
}
myfunc3(vec1)
myfunc3(vec2, vec3)
myfunc3(vec1, vec2, vec3)
# Funções Built-in - Não tente recriar a roda
# Comparação de eficiência entre função vetorizada e função "vetorizada no R"
x <- 1:10000000
# Função que calcula a raiz quadrada de cada elemento de um vetor de números
meu_sqrt <- function(numeros) {
resp <- numeric(length(numeros))
for(i in seq_along(numeros)) {
resp[i] <- sqrt(numeros[i])
}
return(resp)
}
system.time(x2a <- meu_sqrt(x))
system.time(x2b <- sqrt(x))
# Sua máquina pode apresentar resultado diferente por conta da precisão de cálculo do processador.
identical(x2a, x2b)