Valores Únicos
Parte da seção Lógica e Fluxo do Journey de R da Coddy. Lição 12 de 64.
R não tem um tipo separado para conjuntos: um conjunto é um vetor sem valores repetidos. unique() remove as repetições e mantém a primeira ocorrência de cada valor, na ordem original.
tags <- c("r", "stats", "r", "data", "stats")
print(unique(tags))
print(length(unique(tags)))Saída:
[1] "r" "stats" "data"
[1] 3duplicated() retorna TRUE para cada valor que já apareceu anteriormente no vetor. A primeira ocorrência é FALSE:
ids <- c(7, 3, 7, 9, 3)
print(duplicated(ids))
print(ids[duplicated(ids)])Saída:
[1] FALSE FALSE TRUE FALSE TRUE
[1] 7 3Ambas as funções comparam valores exatos, portanto "R" e "r" são diferentes. Normalize o texto primeiro quando a diferença entre maiúsculas e minúsculas não deve importar:
langs <- c("R", "python", "r", "Python")
print(length(unique(langs)))
print(unique(tolower(langs)))Saída:
[1] 4
[1] "r" "python"unique() também funciona com números, e sort(unique(x)) lista os valores distintos em ordem crescente. sum(duplicated(x)) conta quantos elementos são repetidos:
rolls <- c(4, 2, 6, 2, 4, 4)
print(sort(unique(rolls)))
print(sum(duplicated(rolls)))Saída:
[1] 2 4 6
[1] 3Desafio
FácilComplete count_distinct(tags). Retorne quantas tags diferentes existem quando a distinção entre maiúsculas e minúsculas é ignorada: R e r contam uma vez.
O código fornecido lê as tags como uma linha separada por vírgulas e imprime o número retornado.
Experimente você mesmo
count_distinct <- function(tags) {
# Escreva seu código aqui
0
}
# Código de entrada/saída fornecido: mantenha-o como está
input <- suppressWarnings(readLines(file("stdin")))
cat(count_distinct(strsplit(input[1], ",")[[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