SEMANA 07 - Operações de Repetição: modificar vetor em loop - Atividade B07

Gustavo Eduardo Marcatti

Questão (a)

Função e dados de entrada

# Função para computar o volume total de um talhão
func_vol <- function(dap, sobr, area_talhao){
   altura <- exp(3.7004 - 7.6165/dap)
   vol <- 0.0000599458 * dap^1.82083 * altura^0.97645
   vol_ha <- vol * 1111 * sobr
   vol_talhao <- vol_ha * area_talhao
   return(vol_talhao)
}

# Vetores de teste
talhao_vetor <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) # código do talhão
area_vetor <- c(40, 35, 42, 31, 28, 30, 40, 38, 60, 30) # área do talhão
dap_vetor <- c(19, 25, 26, 23, 25, 27, 25, 26, 24, 18) # dap do talhão
sobr_vetor <- c(90, 89, 93, 94, 92, 97, 99, 91, 85, 94) # sobrevivência no talhão

Resolução

vol_talhao <- vector("numeric", length(talhao_vetor))
for (i in seq_along(talhao_vetor)) {
   vol_talhao[i] <- func_vol(dap_vetor[i], sobr_vetor[i], area_vetor[i])
}
vol_talhao # imprimir vetor vol_talhao na tela

Questão (b)

Função para pesquisar (e imprimir na tela) valores específicos em um vetor (fornecido)

fun_pesq1 <- function(vetor, valor) {
   indx <- c() # aqui
   existe <- "NAO"
   for (i in 1:length(vetor)) {
      if (vetor[i] == valor) {
         indx <- c(indx, i) # aqui
         #cat("Existe o número e seu índice é", i, "\n")
         existe <- "SIM"
      } 
   }
   if (existe == "NAO") {
      #cat("NÃO existe o número... \n")
      return(-1) # aqui
   } else { # aqui
      return(indx) # aqui
   }
}

Resolução

Função para pesquisar (e armazenar os índices em um vetor) valores específicos em um vetor (resolução)

fun_pesq2 <- function(vetor, valor) {
   existe <- "NAO"
   indx <- vector("logical", length(vetor))
   for (i in 1:length(vetor)) {
      if (vetor[i] == valor) {
         #cat("Existe o número e seu índice é", i, "\n")
         indx[i] <- TRUE
         existe <- "SIM"
      }
   }
   if (existe == "NAO") {
      #cat("NÃO existe o número... \n")
      return(-1)
   } else {
      indices <- 1:length(vetor)
      return(indices[indx])
   }
}

Testar e comparar as funções

# Vetor de teste
meu_vetor <- c(12, 32, 12, 45, 102, 2, 23, 19, 77, 5, 
               201, 154, 303, 25, 12, 2, 534, 65, 91, 2)
# Aplicação da função de pesquisa
fun_pesq1(meu_vetor, 12)
fun_pesq2(meu_vetor, 12)