Recherches dans des vecteurs nommés
Fait partie de la section Logique et flux d’exécution du Journey R de Coddy. Leçon 7 sur 64.
Un vecteur nommé stocke des valeurs sous des noms, ce qui en fait une table de recherche : le nom est la clé et l’élément est sa valeur. Placez le nom dans [[ ]] pour obtenir uniquement la valeur.
prices <- c(tea = 4, cake = 7)
print(prices[["cake"]])
print(names(prices))Sortie :
[1] 7
[1] "tea" "cake"Les crochets simples renvoient l’élément avec son nom. [[ ]] renvoie uniquement la valeur :
prices <- c(tea = 4, cake = 7)
print(prices["cake"])
print(prices[["cake"]] * 2)Résultat :
cake
7
[1] 14Le nom peut provenir d’une variable, ce qui permet à un programme de rechercher une clé lue depuis l’entrée :
prices <- c(tea = 4, cake = 7)
item <- "tea"
print(prices[[item]])Sortie :
[1] 4Un vecteur de noms recherche plusieurs clés à la fois, y compris les répétitions, de sorte que sum() totalise une commande en une seule étape :
prices <- c(tea = 4, cake = 7)
order <- c("tea", "cake", "tea")
print(sum(prices[order]))Sortie :
[1] 15Un nom manquant se comporte différemment dans les deux formes : prices["milk"] renvoie NA, et prices[["milk"]] s’arrête avec l’erreur subscript out of bounds.
Défi
FacileComplétez line_total(item, qty). La fonction définit le menu ci-dessous. Renvoyez le prix de item multiplié par qty, avec deux décimales : tea et 3 donnent 7.50.
menu <- c(tea = 2.5, coffee = 3, cake = 4.25, soup = 6)Chaque article de l’entrée figure dans le menu. Le code fourni lit l’article et la quantité, puis affiche la valeur renvoyée.
Essayez vous-même
line_total <- function(item, qty) {
menu <- c(tea = 2.5, coffee = 3, cake = 4.25, soup = 6)
# Écrivez votre code ici
""
}
# Code d'entrée/sortie fourni : gardez-le tel quel
input <- suppressWarnings(readLines(file("stdin")))
cat(line_total(input[1], as.numeric(input[2])), sep = "\n")
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Logique et flux d’exécution
1Les chaînes en profondeur
Sous-chaînes avec substr()Mise en forme avec sprintf()Scinder et joindreRechercher dans les chaînesRemplacer du texteRécapitulatif - Créateur de nom d'utilisateur4Matrices
Créer des matricesIndexer des matricesRécapitulatifs des lignes et des colonnesArithmétique matricielleRécapitulatif - Plan de salle7La famille Apply
lapply et sapplyMap et mapplyFilter et FindReduceRécapitulatif - Pipeline de données10Structures de contrôle avancées
La fonction switch()ifelse() vectorisérepeat et breakFonctions récursivesRécapitulatif – Classificateur de notes2Recherches par clé-valeur
Recherches dans des vecteurs nommésVérifier les clésAjouter et supprimer des clésParcourir les nomsRécapitulatif - Bureau des stocks5Projet - Carnet de notes
Ajouter des élèvesEnregistrer les notes3Ensembles et comptage
Valeurs uniquesOpérations sur les ensemblesTests d’appartenanceCompter avec table()Récapitulatif - Invités à l’événement6Les fonctions comme valeurs
Fonctions anonymesPasser des fonctionsRetourner des fonctionsFermetures avec étatRécapitulatif - Règles de remise9Data Frames
Créer des Data FramesColonnes et lignesFiltrer les lignesAjouter et trierRécapitulatif - Rapport des ventes12Projet - Suivi des dépenses
Enregistrer les dépensesDépenses totalesEntraînez-vous par vous-même : Compilateur R en ligne