Quoi acheter
Fait partie de la section Fondamentaux du Journey R de Coddy — leçon 78 sur 78.
Défi
FacileCréez une fonction appelée what_to_buy qui prend deux arguments : budget (une valeur numérique) et prices (un vecteur nommé de prix d'articles). La fonction doit retourner un vecteur de caractères contenant les noms de tous les articles dont le prix est inférieur ou égal au budget.
Si aucun article n'est abordable, retournez un vecteur de caractères vide en utilisant character(0).
Vous recevrez les entrées suivantes :
- Le montant du budget (un nombre)
- Une liste de noms d'articles séparés par des virgules (par exemple,
apple,banana,steak,bread) - Une liste de prix correspondants séparés par des virgules (par exemple,
2,1,15,3)
Analysez les entrées pour créer un vecteur nommé de prix, appelez votre fonction et affichez le résultat. Utilisez print() pour afficher le vecteur de caractères retourné.
Par exemple, si l'entrée est :
5
apple,banana,steak,bread
2,1,15,3La sortie devrait être :
[1] "apple" "banana" "bread"Si l'entrée est :
10
laptop,phone,tablet
999,599,399La sortie devrait être :
character(0)Conseils :
- Utilisez
strsplit(input, ",")[[1]]pour diviser les chaînes séparées par des virgules en vecteurs - Utilisez
as.numeric()pour convertir les chaînes de prix en nombres - Utilisez
names(prices) <- item_namespour créer un vecteur nommé - Utilisez l'indexation logique avec
names()pour extraire les noms des articles abordables
Essayez vous-même
# Lire l'entrée
con <- file("stdin", "r")
budget <- as.numeric(suppressWarnings(readLines(con, n = 1)))
item_names_input <- suppressWarnings(readLines(con, n = 1))
prices_input <- suppressWarnings(readLines(con, n = 1))
close(con)
# Analyser les entrées
item_names <- strsplit(item_names_input, ",")[[1]]
price_values <- as.numeric(strsplit(prices_input, ",")[[1]])
# Créer un vecteur de prix nommé
prices <- price_values
names(prices) <- item_names
# TODO: Écrivez votre fonction what_to_buy ci-dessous
# La fonction doit prendre le budget et les prix comme arguments
# et retourner un vecteur de caractères des noms d'articles abordables
# Appeler la fonction et afficher le résultat
result <- what_to_buy(budget, prices)
print(result)Toutes les leçons de Fondamentaux
4Opérateurs - Partie 2
Opérateurs logiques (AND, OR)Opérateurs logiques - Partie 2 (NOT)Récapitulatif - Logique simpleLogique vectorisée - Partie 1Logique vectorisée - Partie 27Calculateur de partage d'addition
Message de bienvenueRécupérer la saisie utilisateur10FizzBuzz avec une variante
Présentation du jeuLa fonction FizzBuzz2Variables et types de données
Type de données numériqueType de données entierType de données caractèreType de données logiqueVérification des types de donnéesConventions de nommageValeurs manquantes : NARécapitulatif - Création de variables8Boucles
Boucle ForBoucle WhileBreakSuivant (Continue)Récapitulatif - FactorielleGénération de séquences (seq, :)Boucles imbriquéesRécapitulatif - Saisie dynamique3Opérateurs, partie 1
Opérateurs arithmétiquesDivision entière et moduloOpérateurs d'affectationRécapitulatif - Mathématiques simplesOpérateurs de comparaison6Entrées/Sorties de base
Affichage avec PrintCat pour l'affichageAffichage avec des variablesLire l'entrée avec readline()Bases de la conversion de typesRécapitulatif - Calculateur d'âgeRécapitulatif - Vrai ou Faux9Fonctions
Déclarer une fonctionArguments de fonctionValeurs de retourRécapitulatif - Fonction SigmaRécapitulatif - Fonction de validationValeurs de paramètres par défaut