Mise en forme avec sprintf()
Fait partie de la section Logique et flux d’exécution du Journey R de Coddy. Leçon 2 sur 64.
sprintf() construit une chaîne à partir d’un modèle. Chaque espace réservé % est remplacé par l’argument suivant : %s pour le texte, %d pour les nombres entiers et %f pour les nombres décimaux.
name <- "Ada"
age <- 36
print(sprintf("%s is %d years old", name, age))Sortie :
[1] "Ada is 36 years old"%d accepte uniquement les nombres entiers : sprintf("%d", 2.5) s’arrête avec une erreur.
Une précision entre % et f définit le nombre de décimales, ainsi %.2f arrondit à deux décimales :
total <- 3 * 4.5 * 1.2
print(sprintf("Total: %.2f", total))Sortie :
[1] "Total: 16.20"Une largeur complète la valeur jusqu'à atteindre ce nombre de caractères : %5d complète à gauche, %-6s complète à droite et %03d complète avec des zéros. %% affiche un signe de pourcentage.
print(sprintf("[%5d]", 42))
print(sprintf("[%-6s]", "tea"))
print(sprintf("%03d", 7))
print(sprintf("%d%%", 85))Sortie :
[1] "[ 42]"
[1] "[tea ]"
[1] "007"
[1] "85%"sprintf() est vectorisé : avec des arguments vectoriels, il renvoie une chaîne par élément. cat() avec sep = "\n" affiche chaque chaîne sur sa propre ligne.
items <- c("tea", "cake")
prices <- c(4, 12.5)
lines <- sprintf("%-5s %6.2f", items, prices)
cat(lines, sep = "\n")Sortie :
tea 4.00
cake 12.50Défi
FacileComplétez receipt_line(item, qty, price). Renvoyez l’article, la quantité et le total de la ligne (qty * price) sous la forme tea x3 = 13.50 : l’article, un espace, x suivi de la quantité, puis = et le total avec exactement deux décimales.
Le code fourni lit l’article, la quantité et le prix (un par ligne), puis affiche la valeur renvoyée.
Essayez vous-même
receipt_line <- function(item, qty, price) {
# Écrivez votre code ici
""
}
# Code d'entrée/sortie fourni : conservez-le tel quel
input <- suppressWarnings(readLines(file("stdin")))
cat(receipt_line(input[1], as.integer(input[2]), as.numeric(input[3])), 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