Lógica vetorizada - Parte 2
Parte da seção Fundamentos do Journey de R da Coddy. Lição 21 de 78.
Assim como AND e OR têm versões vetorizadas, o operador NOT também funciona elemento a elemento em vetores. Quando você aplica ! a um vetor de valores lógicos, ele inverte cada elemento individualmente.
passed <- c(TRUE, FALSE, TRUE, FALSE)
!passed # FALSE TRUE FALSE TRUECada TRUE se torna FALSE, e cada FALSE se torna TRUE. Isso é particularmente útil quando você quer encontrar elementos que não atendem a uma determinada condição:
temperatures <- c(18, 25, 30, 15, 22)
# Encontre temperaturas que NÃO estão acima de 20
!(temperatures > 20) # TRUE FALSE FALSE TRUE FALSEVocê pode combinar o NOT vetorizado com & e | para criar filtros complexos:
ages <- c(16, 25, 18, 30, 14)
has_permission <- c(TRUE, TRUE, FALSE, TRUE, TRUE)
# Pode participar se: idade >= 18 OR (menor de 18 AND tem permissão)
can_participate <- ages >= 18 | (ages < 18 & has_permission)
# TRUE TRUE FALSE TRUE TRUELembre-se: use &, | e ! simples ao trabalhar com vetores, e && e || duplos ao comparar valores individuais.
Desafio
FácilUse o operador NOT vetorizado (!) junto com & e | para criar condições lógicas complexas elemento a elemento.
Os seguintes vetores são fornecidos:
scores <- c(45, 72, 88, 55, 91, 38, 67)
attended <- c(TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, TRUE)
submitted_homework <- c(TRUE, FALSE, TRUE, TRUE, TRUE, FALSE, FALSE)Use operadores lógicos vetorizados, incluindo o operador NOT, para criar os seguintes vetores lógicos:
- Crie um vetor chamado
failedque armazeneTRUEpara cada nota que NÃO seja maior ou igual a 60 - Crie um vetor chamado
absentque armazene o oposto deattended(inverta cada valor) - Crie um vetor chamado
at_riskque armazeneTRUEpara cada estudante que NÃO tenha comparecido OU que NÃO tenha enviado a tarefa - Crie um vetor chamado
passing_but_absentque armazeneTRUEpara cada estudante que tenha uma nota maior ou igual a 60 E que NÃO tenha comparecido - Crie um vetor chamado
needs_supportque armazeneTRUEpara cada estudante em que: (a nota seja menor que 50) OU (o estudante NÃO tenha comparecido E NÃO tenha enviado a tarefa)
Use a função print() para exibir failed, absent, at_risk, passing_but_absent e needs_support exatamente nessa ordem.
Experimente você mesmo
# Vetores dados
scores <- c(45, 72, 88, 55, 91, 38, 67)
attended <- c(TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, TRUE)
submitted_homework <- c(TRUE, FALSE, TRUE, TRUE, TRUE, FALSE, FALSE)
# TODO: Escreva seu código abaixo
# 1. Crie 'failed' - TRUE para scores NOT >= 60
# 2. Crie 'absent' - oposto de attended
# 3. Crie 'at_risk' - NOT attended OR NOT submitted homework
# 4. Crie 'passing_but_absent' - score >= 60 AND NOT attended
# 5. Crie 'needs_support' - (score < 50) OR (NOT attended AND NOT submitted homework)
# Imprima os resultados
print(failed)
print(absent)
print(at_risk)
print(passing_but_absent)
print(needs_support)Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Fundamentos
4Operadores - Parte 2
Operadores lógicos (AND, OR)Operadores lógicos - Parte 2 (NOT)Revisão - Lógica simplesLógica vetorizada - Parte 1Lógica vetorizada - Parte 27Calculadora de Divisão da Conta
Mensagem de Boas-vindasObtendo a Entrada do Usuário10FizzBuzz com uma Reviravolta
Visão Geral do JogoA Função FizzBuzz2Variáveis e Tipos de Dados
Tipo de Dado NuméricoTipo de Dado InteiroTipo de Dado CaractereTipo de Dado LógicoVerificando Tipos de DadosConvenções de NomenclaturaValores Ausentes: NARecapitulação - Criação de Variáveis8Laços
Laço ForLaço WhileBreakNext (Continue)Revisão - FatorialGeração de Sequências (seq, :)Laços AninhadosRevisão - Entrada Dinâmica3Operadores - Parte 1
Operadores aritméticosDivisão inteira e móduloOperadores de atribuiçãoRevisão - Matemática simplesOperadores de comparação6Entrada e saída básicas
Imprimir saídacat para saídaSaída com variáveisLendo entrada com readline()Noções básicas de conversão de tiposRecapitulação - Calculadora de idadeRecapitulação - Verdadeiro ou falso9Funções
Declarando uma FunçãoArgumentos de FunçãoValores de RetornoRecapitulação - Função SigmaRecapitulação - Função de ValidaçãoValores de Parâmetros PadrãoPratique por conta própria: Compilador de R online