O tamanho do vetor resultado é igual o do tamanho do vetor de entrada
Estratégia 1: Criar vetor vazio (com zero elementos) e expandi-lo em cada iteração
vetor <- c(1, 2, 34, 12, 2)
vet_quad <- c()
for (i in 1:length(vetor)) {
quad <- vetor[i]^2
vet_quad <- c(vet_quad, quad)
}
vet_quad
Estratégia 2: criar um vetor com n elementos e modificá-lo em cada iteração
Comparar os tempos de execução
# Estratégia 1
fun_quad1 <- function(vetor) {
vet_quad <- c()
for (i in 1:length(vetor)) {
quad <- vetor[i]^2
vet_quad <- c(vet_quad, quad)
}
return(vet_quad)
}
# Estratégia 2
fun_quad2 <- function(vetor) {
vet_quad <- vector("numeric", length(vetor))
for (i in 1:length(vetor)) {
quad <- vetor[i]^2
vet_quad[i] <- quad
}
return(vet_quad)
}
vetor_teste <- 1:100000
system.time(fun_quad1(vetor_teste)) # estratégia 1: 12,3 s
system.time(fun_quad2(vetor_teste)) # estratégia 2: 0,01 s
system.time(vetor_teste^2) # vetorização nativa do R: 0 s
O tamanho do vetor resultado é diferente do tamanho do vetor de entrada
Estratégia 1: Criar vetor vazio (com zero elementos) e expandi-lo em cada iteração
vetor <- c(20, 2, 34, 12, 2)
div4 <- c()
for (i in 1:length(vetor)) {
if (vetor[i] %% 4 == 0) {
div4 <- c(div4, vetor[i])
}
}
div4
Estratégia 2: criar um vetor com n elementos e modificá-lo em cada iteração