Output formattato con sprintf()
Controlli cifre decimali, riempimento e allineamento con le stringhe di formato di sprintf.
Output formattato con sprintf() è una lezione R Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento R Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso R Academy include 4 lezioni in totale.
Nozioni di base su sprintf()
sprintf() formatta le stringhe usando una stringa di formato con segnaposto. Funziona esattamente come printf del linguaggio C. Il primo argomento è il modello di formato; gli argomenti successivi riempiono i segnaposto nell'ordine.
sprintf('There are %d items', 5)
sprintf('Hello, %s!', 'Alice')
sprintf('Price: %.2f', 9.999)Segnaposto per interi e stringhe
%d formatta un intero, %s formatta una stringa e %f formatta un numero in virgola mobile. Ogni segnaposto viene sostituito nell'ordine dall'argomento corrispondente.
name <- 'Bob'
age <- 34
score <- 88.5
sprintf('%s is %d years old with score %.1f', name, age, score)Controllare il numero di decimali
%.2f significa: formattare come float con esattamente 2 cifre decimali. Il numero tra . e f controlla la precisione. È ideale per valute, percentuali e valori scientifici.
pi_val <- 3.14159265
sprintf('%.0f', pi_val)
sprintf('%.2f', pi_val)
sprintf('%.5f', pi_val)
sprintf('$%.2f', 1234.5)Larghezza del campo e riempimento
Un numero prima della lettera di formato imposta la larghezza minima del campo. I valori sono allineati a destra per impostazione predefinita e completati con spazi a sinistra. È utile per allineare le colonne nei report di testo semplice.
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]))
}Allineamento a sinistra con il flag -
Anteponi il numero della larghezza con - per allineare il testo a sinistra all'interno del campo. È il metodo standard per produrre colonne allineate a sinistra in un output testuale a larghezza fissa.
# 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))Notazione scientifica con %e e %g
%e forza la notazione scientifica (ad esempio 1.23e+04). %g sceglie automaticamente il più breve tra %f e %e: è utile quando i valori coprono molti ordini di grandezza.
x <- 0.000123456
y <- 123456789
sprintf('%e', x)
sprintf('%e', y)
sprintf('%g', x)
sprintf('%g', y)Riempimento con zeri usando il flag 0
Anteponi la larghezza con 0 per completare i numeri con zeri iniziali invece che con spazi. È comunemente usato per ID, date e numerazioni di file con zeri iniziali.
ids <- c(1, 12, 123, 1234)
sprintf('ID_%05d', ids)
# Date parts
sprintf('%04d-%02d-%02d', 2024, 5, 7)Formattazione delle percentuali
Per visualizzare un rapporto come percentuale, moltiplichi per 100 e usi %.1f%%. Il doppio %% inserisce nell'output un simbolo di percentuale letterale (un singolo % verrebbe interpretato come l'inizio di un segnaposto).
pass_rate <- 0.8743
sprintf('Pass rate: %.1f%%', pass_rate * 100)
growth <- 0.0523
sprintf('Growth: +%.2f%%', growth * 100)sprintf() è vettorializzata
Quando si passa un vettore come argomento a sprintf(), la funzione scorre automaticamente il vettore e restituisce una stringa formattata per ogni elemento. Anche la stringa di formato viene ripetuta ciclicamente.
products <- c('Apple', 'Banana', 'Cherry')
prices <- c(0.99, 0.59, 2.49)
sprintf('%-8s costs $%.2f', products, prices)Più segnaposto, più argomenti
Ogni segnaposto utilizza un argomento nell'ordine. Può combinare liberamente %d, %f e %s in un'unica stringa di formato; tutti gli argomenti vettoriali vengono ripetuti ciclicamente fino a raggiungere la lunghezza maggiore.
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() vs paste(): quale usare
Usi paste()/paste0() per semplici concatenazioni; usi sprintf() quando ha bisogno di una formattazione numerica precisa (cifre decimali, larghezze e riempimento). sprintf() è più verbosa, ma offre il controllo completo sull'aspetto dei numeri.
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)Verifica rapida
Quale codice di formato in sprintf() inserisce nell'output un simbolo di percentuale letterale %?
Concetti chiave di sprintf()
Concetti chiave per sprintf():
%dintero,%ffloat,%sstringa,%enotazione scientifica,%gautomatico%.2f= 2 cifre decimali;%10.2f= larghezza 10, 2 cifre decimali%-10s= allineamento a sinistra in un campo di 10 caratteri;%05d= riempimento con zeri fino a 5 cifre%%= simbolo di percentuale letterale nell'outputsprintf()è vettorializzata sui propri argomenti- Preferisca
sprintf()apaste()quando è importante la precisione della formattazione numerica
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))Domande Frequenti
La lezione «Output formattato con sprintf()» è gratuita?
Sì — il testo completo di «Output formattato con sprintf()» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso R Academy, passa a CoddyKit PRO. Il corso R Academy include 4 lezioni in totale.
Cosa imparerò in «Output formattato con sprintf()»?
Controlli cifre decimali, riempimento e allineamento con le stringhe di formato di sprintf. Eserciti R Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare R Academy?
Non è richiesta alcuna esperienza precedente. R Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «Output formattato con sprintf()»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione R Academy?
Sì. Ogni lezione R Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Creazione di stringhe con paste() e paste0()
- Output formattato con sprintf()
- Visualizzazione dell'output con cat() e print()
- Riempimento e allineamento delle stringhe