Testes de Pertinência
Parte da seção Lógica e Fluxo do Journey de R da Coddy. Lição 14 de 64.
x %in% set verifica cada elemento de x e retorna um valor lógico por elemento. all() pergunta se todas as verificações são TRUE, e any(), se pelo menos uma é.
required <- c("flour", "eggs", "milk")
pantry <- c("eggs", "salt", "flour")
print(required %in% pantry)
print(all(required %in% pantry))
print(any(required %in% pantry))Saída:
[1] TRUE TRUE FALSE
[1] FALSE
[1] TRUEIndexe com a verificação negada para listar o que está faltando, na ordem do primeiro vetor:
required <- c("flour", "eggs", "milk", "sugar")
pantry <- c("eggs", "flour")
missing <- required[!(required %in% pantry)]
print(missing)Saída:
[1] "milk" "sugar"setequal(a, b) verifica se dois vetores contêm os mesmos valores, ignorando a ordem e as repetições:
print(setequal(c("a", "b"), c("b", "a", "a")))
print(setequal(c("a", "b"), c("a", "c")))Saída:
[1] TRUE
[1] FALSEEm um vetor vazio, all() é TRUE e any() é FALSE: quando nada é necessário, nada está faltando.
which() transforma um vetor lógico nas posições de seus valores TRUE, informando onde estão as correspondências:
required <- c("flour", "eggs", "milk")
pantry <- c("eggs")
print(which(!(required %in% pantry)))Saída:
[1] 1 3Desafio
FácilComplete check_recipe(required, pantry). Retorne ready quando todos os ingredientes necessários estiverem na despensa. Caso contrário, retorne missing: seguido pelos ingredientes ausentes, na ordem de required, unidos por , .
O código fornecido lê os ingredientes necessários e a despensa como linhas separadas por vírgulas e imprime o valor retornado.
Experimente você mesmo
check_recipe <- function(required, pantry) {
# Escreva seu código aqui
""
}
# Código de entrada/saída fornecido: mantenha-o como está
input <- suppressWarnings(readLines(file("stdin")))
cat(check_recipe(strsplit(input[1], ",")[[1]], strsplit(input[2], ",")[[1]]), sep = "\n")
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Lógica e Fluxo
1Strings em Profundidade
Substrings com substr()Formatação com sprintf()Dividindo e UnindoPesquisando StringsSubstituindo TextoRecapitulação - Criador de Nome de Usuário4Matrizes
Criando MatrizesIndexando MatrizesResumos de Linhas e ColunasAritmética de MatrizesRecapitulação - Tabela de Assentos10Fluxo de Controle Avançado
A Função switch()ifelse() Vetorizadorepeat e breakFunções RecursivasRevisão — Classificador de Notas2Consultas de Chave-Valor
Consultas em Vetores NomeadosVerificando ChavesAdicionando e Removendo ChavesPercorrendo NomesRecapitulação - Mesa de Ações5Projeto - Boletim de Notas
Adicionando AlunosRegistrando Notas3Conjuntos e Contagem
Valores ÚnicosOperações com ConjuntosTestes de PertinênciaContagem com table()Recapitulação - Convidados do Evento6Funções como Valores
Funções AnônimasPassando FunçõesRetornando FunçõesClosures com EstadoRecapitulação - Regras de Desconto9Data Frames
Criando Data FramesColunas e LinhasFiltrando LinhasAdicionando e OrdenandoRecapitulação - Relatório de Vendas12Projeto - Rastreador de Despesas
Registro de DespesasGastos TotaisPratique por conta própria: Compilador de R online