0Pricing
R Academy · Lezione

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():

  • %d intero, %f float, %s stringa, %e notazione scientifica, %g automatico
  • %.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'output
  • sprintf() è vettorializzata sui propri argomenti
  • Preferisca sprintf() a paste() 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

  1. Creazione di stringhe con paste() e paste0()
  2. Output formattato con sprintf()
  3. Visualizzazione dell'output con cat() e print()
  4. Riempimento e allineamento delle stringhe
← Torna a R Academy