concentracoes_proteina <- c(15.5, 32.1, 8.9, 45.0,
21.3, 55.7, 12.0, 39.9)Exercício de Aplicação: Classificação de Amostras Biológicas por Nível (Biologia/Sáude)
Cenário
Em um estudo biológico, você coletou amostras e mediu a concentração de uma proteína (em ng/mL) em cada uma. Você precisa classificar cada amostra em “Baixo”, “Médio” ou “Alto” nível, e também identificar as amostras com “Nível Crítico” que exigem atenção imediata.
Dados
Você tem as concentrações de proteína para 8 amostras:
Instruções para o Exercício
Crie uma função chamada
classificar_nivel_proteinaque receba um valor de concentração de proteína como argumento.Dentro da função, use condicionais (
if-else if-else) para classificar o nível:"Baixo": se a concentração for menor que 15 ng/mL."Médio": se a concentração for entre 15 ng/mL (inclusive) e 40 ng/mL (exclusive)."Alto": se a concentração for 40 ng/mL ou mais.
A função deve retornar a string de classificação (
"Baixo","Médio","Alto").
Crie uma segunda função chamada
gerar_alerta_proteinaque receba a concentração e a classificação do nível como argumentos.Dentro dela, defina um
limiar_critico_alerta(por exemplo,50 ng/mL).Se a concentração for maior ou igual ao
limiar_critico_alerta, a função deve retornar uma mensagem de alerta como:"ALERTA! Amostra com nível crítico de [Concentração] ng/mL!".Caso contrário, deve retornar uma string vazia
"".
Use um laço
forpara iterar sobre cada concentração emconcentracoes_proteina.Dentro do laço, para cada concentração, chame a função
classificar_nivel_proteinapara obter a classificação.Em seguida, chame a função
gerar_alerta_proteinapara verificar se há um alerta.Finalmente, imprima a classificação e, se houver, o alerta para cada amostra, no formato:
"Amostra X: [Concentração] ng/mL - Nível: [Classificação] [Mensagem de Alerta]"(Onde[Mensagem de Alerta]só aparece se não for uma string vazia).
Gabarito
# Dados fornecidos
concentracoes_proteina <- c(15.5, 32.1, 8.9, 45.0,
21.3, 55.7, 12.0, 39.9)
# 1. Função para classificar o nível de proteína
classificar_nivel_proteina <- function(concentracao) {
if (concentracao < 15) {
nivel <- "Baixo"
} else if (concentracao >= 15 && concentracao < 40) {
nivel <- "Médio"
} else { # concentracao >= 40
nivel <- "Alto"
}
return(nivel)
}
# 2. Função para gerar alerta de proteína
gerar_alerta_proteina <- function(concentracao, classificacao_nivel) {
limiar_critico_alerta <- 50 # ng/mL
if (concentracao >= limiar_critico_alerta) {
alerta <- paste0("ALERTA! Amostra com nível crítico de ",
concentracao, " ng/mL!")
} else {
alerta <- "" # Retorna string vazia se não houver alerta
}
return(alerta)
}
# 3. Usar o laço 'for' e as funções para analisar as concentrações
for (i in 1:length(concentracoes_proteina)) {
concentracao_atual <- concentracoes_proteina[i]
# Chama a função de classificação
classificacao <- classificar_nivel_proteina(concentracao_atual)
# Chama a função de alerta
alerta <- gerar_alerta_proteina(concentracao_atual, classificacao)
# Imprime o resultado
# Usamos paste0 para juntar as partes sem espaços extras automáticos
cat(paste0("Amostra ", i, ": ", concentracao_atual,
" ng/mL - Nível: ", classificacao, " ", alerta, "\n"))
}Amostra 1: 15.5 ng/mL - Nível: Médio
Amostra 2: 32.1 ng/mL - Nível: Médio
Amostra 3: 8.9 ng/mL - Nível: Baixo
Amostra 4: 45 ng/mL - Nível: Alto
Amostra 5: 21.3 ng/mL - Nível: Médio
Amostra 6: 55.7 ng/mL - Nível: Alto ALERTA! Amostra com nível crítico de 55.7 ng/mL!
Amostra 7: 12 ng/mL - Nível: Baixo
Amostra 8: 39.9 ng/mL - Nível: Médio