Consultas em Vetores Nomeados
Parte da seção Lógica e Fluxo do Journey de R da Coddy. Lição 7 de 64.
Um vetor nomeado armazena valores associados a nomes, o que o torna uma tabela de consulta: o nome é a chave e o elemento é o seu valor. Coloque o nome em [[ ]] para obter apenas o valor.
prices <- c(tea = 4, cake = 7)
print(prices[["cake"]])
print(names(prices))Saída:
[1] 7
[1] "tea" "cake"Colchetes simples retornam o elemento junto com seu nome. [[ ]] retorna apenas o valor:
prices <- c(tea = 4, cake = 7)
print(prices["cake"])
print(prices[["cake"]] * 2)Saída:
cake
7
[1] 14O nome pode vir de uma variável, que é como um programa procura uma chave que leu da entrada:
prices <- c(tea = 4, cake = 7)
item <- "tea"
print(prices[[item]])Saída:
[1] 4Um vetor de nomes consulta várias chaves de uma só vez, incluindo repetições, então sum() totaliza um pedido em uma única etapa:
prices <- c(tea = 4, cake = 7)
order <- c("tea", "cake", "tea")
print(sum(prices[order]))Saída:
[1] 15Um nome ausente se comporta de maneira diferente nas duas formas: prices["milk"] retorna NA, e prices[["milk"]] interrompe a execução com o erro subscript out of bounds.
Desafio
FácilComplete line_total(item, qty). A função define o menu abaixo. Retorne o preço de item multiplicado por qty, formatado com duas casas decimais: tea e 3 resultam em 7.50.
menu <- c(tea = 2.5, coffee = 3, cake = 4.25, soup = 6)Todos os itens da entrada estão no menu. O código fornecido lê o item e a quantidade e imprime o valor retornado.
Experimente você mesmo
line_total <- function(item, qty) {
menu <- c(tea = 2.5, coffee = 3, cake = 4.25, soup = 6)
# Escreva seu código aqui
""
}
# Código de entrada/saída fornecido: mantenha-o como está
input <- suppressWarnings(readLines(file("stdin")))
cat(line_total(input[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 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