Uma base de dados consiste em 10 milhões de observações de pesos de adultos saudáveis. Suponha que se deseja calcular a proporção de indivíduos amostrados que tem peso maior ou igual a L e menor ou igual a U, com U > L.Se os valores estão guardados em um vetor chamado “pesos”, o comando R que calcula corretamente a proporção desejada é:
Asum( (pesos <= L) * (pesos >= U) );
Bsum( (pesos >= L) + (pesos <= U) );
Cmean( (pesos >= L) * (pesos <= U) );
Dmean( (pesos <= L) * (pesos >= U) );
Emean( (pesos <= L) + (pesos >= U) ).
Revelar gabarito e comentário▾
GabaritoC — mean( (pesos >= L) * (pesos <= U) );
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Cálculo de proporção no R – operações lógicas vetorizadas
Gabarito: letra C. O comando mean( (pesos >= L) * (pesos <= U) ) calcula corretamente a proporção de observações no intervalo [L, U] porque:
pesos >= L e pesos <= U geram vetores lógicos (TRUE/FALSE).
O operador * atua como E lógico: o resultado só é TRUE (1) quando ambas as condições são verdadeiras.
mean() de um vetor numérico (TRUE=1, FALSE=0) retorna a média, que é exatamente a proporção de 1's.
A banca testa a compreensão de vetorização e coerção de tipos lógicos em R.
1pesos >= L (vetor lógico)
2pesos <= U (vetor lógico)
3* (AND lógico) → TRUE=1, FALSE=0
4mean() → proporção de 1's
LEVEL · soulevel.com.br
Alternativa A — ❌ Incorreta
sum( (pesos <= L) * (pesos >= U) ) – Inverte os operadores: <= L e >= U selecionam observações MENORES ou IGUAIS a L e MAIORES ou IGUAIS a U, ou seja, fora do intervalo desejado (exceto possíveis interseções em L=U, mas isso não é o caso geral). Além disso, sum() retorna a contagem, não a proporção.
Alternativa B — ❌ Incorreta
sum( (pesos >= L) + (pesos <= U) ) – O operador + soma os vetores lógicos (coercionados para 0/1), resultando em valores 0, 1 ou 2. A soma total não equivale ao número de observações no intervalo (porque observações com ambas as condições verdadeiras contam 2, e as com nenhuma condição verdadeira contam 0). Também não divide pelo total.
Alternativa C — ✅ Correta ⟵ GABARITO
mean( (pesos >= L) * (pesos <= U) ) – pesos >= L e pesos <= U são vetores lógicos. O produto * equivale ao AND lógico: cada elemento será 1 se ambas as condições forem TRUE, 0 caso contrário. mean() calcula a proporção de 1's, ou seja, a fração de observações no intervalo [L, U].
Alternativa D — ❌ Incorreta
mean( (pesos <= L) * (pesos >= U) ) – Mesmo erro da alternativa A: inverte os operadores de comparação, selecionando valores fora do intervalo. Embora use mean(), a condição lógica está errada.
Alternativa E — ❌ Incorreta
mean( (pesos <= L) + (pesos >= U) ) – O operador + produz valores 0, 1 ou 2, como na alternativa B. A média desses valores não é a proporção desejada (por exemplo, observações com ambas as condições verdadeiras geram 2, distorcendo a média).
NÃO CAIA NESSA!
A banca explora a confusão entre operadores lógicos (* para AND e + para OR) e a inversão dos sinais de comparação. Lembre-se: para um intervalo fechado [L,U], use >= L e <= U combinados com *. A função mean() já entrega a proporção; sum() exigiria divisão por length().