0Pricing
R Academy · Lezione

Riempimento e allineamento delle stringhe

Usi formatC() e format() per produrre testo a larghezza fissa e allineato.

Riempimento e allineamento delle stringhe è una lezione R Academy gratuita su CoddyKit. Questa è la lezione 4 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.

Perché è importante il riempimento delle stringhe

L'output a larghezza fissa è essenziale per le tabelle in testo semplice, i file di log e i report. R mette a disposizione formatC() e format() per aggiungere riempimento fino a una larghezza fissa, assicurando il corretto allineamento delle colonne nelle visualizzazioni a spaziatura fissa.

# Unformatted: columns misalign
cat('Alice 85\n')
cat('Bob 9200\n')
# Padded: columns align
cat(formatC('Alice', width = 10), formatC(85,   width = 6), '\n')
cat(formatC('Bob',   width = 10), formatC(9200, width = 6), '\n')

formatC() — Riempimento allineato a destra

formatC(x, width = n) aggiunge riempimento fino a una larghezza di almeno n caratteri, allineando il contenuto a destra per impostazione predefinita. Gli spazi vengono aggiunti a sinistra. Funziona sia con i numeri sia con le stringhe.

formatC('hi',   width = 10)
formatC(42,     width = 10)
formatC(3.14,   width = 10)

Allineamento a sinistra di formatC() con flag

L'argomento flag = '-' passa all'allineamento a sinistra, aggiungendo spazi sul lato destro. È ideale per le etichette testuali nelle colonne delle tabelle quando desiderate che i valori inizino dal margine sinistro.

items <- c('Pen', 'Notebook', 'Stapler')
prices <- c(1.5, 4.99, 7.25)
for (i in seq_along(items)) {
  cat(formatC(items[i], width = 12, flag = '-'),
      formatC(prices[i], format = 'f', digits = 2, width = 8),
      '\n')
}

formatC() con formati numerici

formatC() supporta i codici di formato: 'f' per i decimali a virgola fissa, 'e' per la notazione scientifica, 'g' per scegliere il più breve tra i due e 'd' per gli interi. L'argomento digits controlla la precisione.

x <- 12345.6789
formatC(x, format = 'f', digits = 2)
formatC(x, format = 'e', digits = 3)
formatC(x, format = 'g', digits = 5)
formatC(42L, format = 'd', width = 8)

format() — Allineamento con R base

format(x, width = n, justify = 'left'/'right'/'centre') è la funzione generica per l'allineamento. Funziona con qualsiasi oggetto R e restituisce un vettore di caratteri composto da stringhe di uguale larghezza. La giustificazione predefinita è a destra per i numeri e a sinistra per le stringhe.

words <- c('cat', 'elephant', 'ox')
format(words, width = 10)
format(words, width = 10, justify = 'right')

format() per la precisione numerica

format() controlla anche le cifre decimali con nsmall (numero minimo di cifre dopo il separatore decimale) e i separatori delle migliaia con big.mark. Queste opzioni sono ideali per visualizzare dati finanziari.

format(1234567.8,  big.mark = ',', nsmall = 2)
format(0.1,        nsmall = 4)
format(c(1.5, 100, 0.005), nsmall = 3)

strrep() — Ripetizione delle stringhe

strrep(x, times) ripete una stringa per un determinato numero di volte. Utilizzatela per creare righe separatrici, stringhe di riempimento o elementi decorativi visivi senza concatenare manualmente i caratteri.

strrep('-', 40)
strrep('=-', 20)
strrep(c('ab', 'cd'), c(3, 2))
# Draw a simple table border
cat(strrep('=', 30), '\n')

Creazione di una tabella di testo a larghezza fissa

Combinate formatC() con cat() e strrep() per creare una tabella ordinata in testo semplice. Questo schema è comune negli strumenti CLI e nei file di log.

header <- paste0(formatC('Name',  width=12,flag='-'),
                 formatC('Score', width=8,flag='-'),
                 formatC('Grade', width=8,flag='-'))
cat(header, '\n')
cat(strrep('-', 28), '\n')
row1 <- paste0(formatC('Alice',  width=12,flag='-'),
               formatC(92,width=8),formatC('A',width=8,flag='-'))
cat(row1, '\n')

formatC() e sprintf() per il riempimento

Sia formatC() sia sprintf() possono produrre un output con riempimento. sprintf() è più concisa nei casi semplici; formatC() è più flessibile quando si applica la stessa formattazione a un intero vettore.

x <- 42
# sprintf approach
sprintf('%10d', x)
sprintf('%-10s', 'hello')
# formatC approach
formatC(x,       width = 10)
formatC('hello', width = 10, flag = '-')

Controllo della notazione scientifica

formatC(x, format='e', digits=n) o options(scipen=999) controllano quando R passa alla notazione scientifica. L'opzione scipen rappresenta una penalità: valori più alti ritardano il passaggio alla notazione scientifica.

# Default scipen
print(0.0001234)
print(1234567890)
# Force scientific
formatC(0.0001234, format = 'e', digits = 3)
# Suppress scientific globally
old <- options(scipen = 999)
print(0.0001234)
options(old)

In pratica: riempimento di ID ed etichette

Un'esigenza comune consiste nell'aggiungere zeri iniziali agli ID o riempire a sinistra le etichette nei report. formatC() gestisce entrambi i casi: utilizzate flag = '0' per aggiungere zeri iniziali ai numeri e flag = '-' per allineare a sinistra le stringhe.

ids    <- c(1, 12, 123)
names  <- c('Alice', 'Bob', 'Carol')
scores <- c(88.5, 91.0, 76.25)
for (i in seq_along(ids)) {
  cat(formatC(ids[i], width=5, format='d', flag='0'),
      formatC(names[i], width=10, flag='-'),
      formatC(scores[i], width=8, format='f', digits=2),
      '\n')
}

Verifica rapida

Quale argomento di formatC() allinea l'output a sinistra all'interno della larghezza specificata?

Riempimento e allineamento: concetti chiave

Concetti chiave sul riempimento e l'allineamento delle stringhe:

  • formatC(x, width=n) aggiunge riempimento a destra fino alla larghezza n; flag='-' allinea a sinistra
  • formatC(x, format='f', digits=2) per i decimali a virgola fissa; 'e' per la notazione scientifica
  • format(x, justify='left'/'right'/'centre') per l'allineamento generico
  • format(x, big.mark=',', nsmall=2) per i separatori delle migliaia e le cifre decimali finali
  • strrep(s, n) ripete una stringa n volte: è ideale per le righe separatrici
  • Combinate queste funzioni con cat() per l'output di tabelle in testo semplice
cat(strrep('=', 30), '\n')
cat(formatC('Item', width=12, flag='-'),
    formatC('Price', width=10), '\n')
cat(strrep('-', 30), '\n')
cat(formatC('Apple', width=12, flag='-'),
    formatC(1.99, width=10, format='f', digits=2), '\n')

Domande Frequenti

La lezione «Riempimento e allineamento delle stringhe» è gratuita?

Sì — il testo completo di «Riempimento e allineamento delle stringhe» è 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 «Riempimento e allineamento delle stringhe»?

Usi formatC() e format() per produrre testo a larghezza fissa e allineato. 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 4 di 4.

Quanto tempo richiede la lezione «Riempimento e allineamento delle stringhe»?

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