Sortie mise en forme avec sprintf()
Contrôlez le nombre de décimales, le remplissage et l’alignement avec les chaînes de format de sprintf.
Sortie mise en forme avec sprintf() est une leçon R Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage R Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours R Academy comprend 4 leçons au total.
Bases de sprintf()
sprintf() met en forme les chaînes à l'aide d'une chaîne de format contenant des espaces réservés. Elle fonctionne exactement comme printf en C. Le premier argument est le modèle de format ; les arguments suivants remplissent les espaces réservés dans l'ordre.
sprintf('There are %d items', 5)
sprintf('Hello, %s!', 'Alice')
sprintf('Price: %.2f', 9.999)Espaces réservés pour les entiers et les chaînes
%d met en forme un entier, %s met en forme une chaîne et %f met en forme un nombre à virgule flottante. Chaque espace réservé est remplacé dans l'ordre par l'argument correspondant.
name <- 'Bob'
age <- 34
score <- 88.5
sprintf('%s is %d years old with score %.1f', name, age, score)Contrôler le nombre de décimales
%.2f signifie : mettre en forme comme un nombre à virgule flottante avec exactement 2 décimales. Le nombre entre . et f contrôle la précision. C'est idéal pour les devises, les pourcentages et les valeurs scientifiques.
pi_val <- 3.14159265
sprintf('%.0f', pi_val)
sprintf('%.2f', pi_val)
sprintf('%.5f', pi_val)
sprintf('$%.2f', 1234.5)Largeur de champ et remplissage
Un nombre placé avant la lettre de format définit la largeur minimale du champ. Les valeurs sont alignées à droite par défaut et complétées par des espaces à gauche. C'est utile pour aligner les colonnes dans des rapports en texte brut.
items <- c('Pen', 'Notebook', 'Stapler')
prices <- c(1.5, 4.99, 7.25)
for (i in seq_along(items)) {
cat(sprintf('%-10s $%6.2f\n', items[i], prices[i]))
}Alignement à gauche avec l'indicateur -
Faites précéder le nombre de largeur de - pour aligner le texte à gauche dans le champ. C'est la méthode standard pour produire des colonnes alignées à gauche dans une sortie textuelle à largeur fixe.
# Right-aligned (default)
sprintf('%10s', 'hi')
# Left-aligned
sprintf('%-10s', 'hi')
# Practical: side-by-side
cat(sprintf('%-8s %5d\n', 'Alice', 42))
cat(sprintf('%-8s %5d\n', 'Bob', 7))Notation scientifique avec %e et %g
%e impose la notation scientifique (par exemple 1.23e+04). %g choisit automatiquement le plus court entre %f et %e — ce qui est utile lorsque les valeurs couvrent plusieurs ordres de grandeur.
x <- 0.000123456
y <- 123456789
sprintf('%e', x)
sprintf('%e', y)
sprintf('%g', x)
sprintf('%g', y)Remplissage par des zéros avec l'indicateur 0
Faites précéder la largeur de 0 pour compléter les nombres avec des zéros initiaux plutôt qu'avec des espaces. Cette technique est couramment utilisée pour les identifiants, les dates et la numérotation de fichiers complétés par des zéros.
ids <- c(1, 12, 123, 1234)
sprintf('ID_%05d', ids)
# Date parts
sprintf('%04d-%02d-%02d', 2024, 5, 7)Mise en forme des pourcentages
Pour afficher un rapport sous forme de pourcentage, multipliez-le par 100 et utilisez %.1f%%. Le double %% insère un signe de pourcentage littéral dans la sortie (un seul % serait interprété comme le début d'un espace réservé).
pass_rate <- 0.8743
sprintf('Pass rate: %.1f%%', pass_rate * 100)
growth <- 0.0523
sprintf('Growth: +%.2f%%', growth * 100)sprintf() est vectorisée
Lorsque vous transmettez un vecteur comme argument à sprintf(), la fonction parcourt automatiquement le vecteur et renvoie une chaîne mise en forme pour chaque élément. La chaîne de format elle-même est répétée.
products <- c('Apple', 'Banana', 'Cherry')
prices <- c(0.99, 0.59, 2.49)
sprintf('%-8s costs $%.2f', products, prices)Plusieurs espaces réservés, plusieurs arguments
Chaque espace réservé consomme un argument dans l'ordre. Vous pouvez mélanger librement %d, %f et %s dans une même chaîne de format, et tous les arguments vectoriels sont répétés jusqu'à atteindre la longueur maximale.
months <- c('Jan', 'Feb', 'Mar')
revenue <- c(12500, 9800, 15300)
growth <- c(0.05, -0.12, 0.18)
sprintf('%s: $%d (growth: %+.1f%%)',
months, revenue, growth * 100)sprintf() ou paste() : quand utiliser chaque fonction
Utilisez paste()/paste0() pour une concaténation simple ; utilisez sprintf() lorsque vous avez besoin d'une mise en forme numérique précise (décimales, largeurs, remplissage). sprintf() est plus verbeuse, mais vous donne un contrôle total sur l'apparence des nombres.
val <- 1234567.891
# paste: no formatting control
paste('Total:', val)
# sprintf: formatted as currency
sprintf('Total: $%,.2f', val)
# With manual formatting
sprintf('Total: $%15.2f', val)Vérification rapide
Quel code de format dans sprintf() insère un signe de pourcentage littéral % dans la sortie ?
Points essentiels de sprintf()
Points essentiels concernant sprintf() :
%dentier,%fnombre à virgule flottante,%schaîne,%enotation scientifique,%gautomatique%.2f= 2 décimales ;%10.2f= largeur 10, 2 décimales%-10s= alignement à gauche dans un champ de 10 caractères ;%05d= remplissage par des zéros jusqu'à 5 chiffres%%= signe de pourcentage littéral dans la sortiesprintf()est vectorisée sur ses arguments- Préférez
sprintf()àpaste()lorsque la précision de la mise en forme numérique est importante
x <- 0.87654
cat(sprintf('Default f : %f\n', x))
cat(sprintf('2 decimals : %.2f\n', x))
cat(sprintf('Percentage : %.1f%%\n', x * 100))
cat(sprintf('Scientific : %e\n', x))
cat(sprintf('Auto : %g\n', x))Questions Fréquemment Posées
La leçon « Sortie mise en forme avec sprintf() » est-elle gratuite ?
Oui — le texte complet de « Sortie mise en forme avec sprintf() » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours R Academy, passe à CoddyKit PRO. Le cours R Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Sortie mise en forme avec sprintf() » ?
Contrôlez le nombre de décimales, le remplissage et l’alignement avec les chaînes de format de sprintf. Tu pratiques R Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer R Academy ?
Aucune expérience préalable n'est requise. R Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « Sortie mise en forme avec sprintf() » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon R Academy ?
Oui. Chaque leçon R Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Construire des chaînes avec paste() et paste0()
- Sortie mise en forme avec sprintf()
- Afficher la sortie avec cat() et print()
- Remplissage et alignement des chaînes