Ordenando Vetores
Parte da seção Lógica e Fluxo do Journey de R da Coddy. Lição 37 de 64.
sort(x) retorna os valores de x em ordem crescente, e decreasing = TRUE a inverte. O vetor original não é alterado:
scores <- c(72, 95, 60, 88)
print(sort(scores))
print(sort(scores, decreasing = TRUE))
print(scores)Saída:
[1] 60 72 88 95
[1] 95 88 72 60
[1] 72 95 60 88O texto é ordenado alfabeticamente. A ordem exata depende das configurações de idioma do sistema: no Coddy, assim como em muitos servidores, as letras maiúsculas vêm antes das minúsculas, então "Zed" é ordenado antes de "ada". Converta com tolower() quando o uso de maiúsculas e minúsculas não deve importar:
names <- c("cy", "Zed", "ada")
print(sort(names))
print(sort(tolower(names)))Saída:
[1] "Zed" "ada" "cy"
[1] "ada" "cy" "zed"rev(x) inverte a ordem atual sem ordenar, e head(x, n) mantém os primeiros n elementos, o que, junto com sort(), produz uma lista dos primeiros colocados:
scores <- c(72, 95, 60, 88)
print(rev(scores))
print(head(sort(scores, decreasing = TRUE), 2))Saída:
[1] 88 60 95 72
[1] 95 88Um vetor nomeado ordenado mantém cada nome com seu valor, portanto os nomes aparecem na ordem dos valores:
stock <- c(tea = 12, jam = 3, oil = 7)
low_first <- sort(stock)
print(names(low_first))
print(low_first[["jam"]])Saída:
[1] "jam" "oil" "tea"
[1] 3Desafio
FácilComplete top_scores(scores, n). Retorne as n maiores pontuações, da maior para a menor, unidas por , . Se houver menos de n pontuações, retorne todas elas.
O código fornecido lê as pontuações como uma linha separada por vírgulas e n, e imprime o valor retornado.
Experimente você mesmo
top_scores <- function(scores, n) {
# Escreva seu código aqui
""
}
# Código de entrada/saída fornecido: mantenha-o como está
input <- suppressWarnings(readLines(file("stdin")))
cat(top_scores(as.numeric(strsplit(input[1], ",")[[1]]), as.numeric(input[2])), 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 Notas8Ordenação e Agrupamento
Ordenando VetoresOrdenando por uma ChaveAgrupando com split()Resumos de GruposRecapitulação - Tabela de Classificação3Conjuntos 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