Formattazione con sprintf()
Fa parte della sezione Logica e flusso del percorso R di Coddy. Lezione 2 di 64.
sprintf() costruisce una stringa a partire da un modello. Ogni segnaposto % viene sostituito dall'argomento successivo: %s per il testo, %d per i numeri interi e %f per i numeri decimali.
name <- "Ada"
age <- 36
print(sprintf("%s is %d years old", name, age))Output:
[1] "Ada is 36 years old"%d accetta solo numeri interi: sprintf("%d", 2.5) si interrompe con un errore.
Una precisione tra % e f imposta il numero di decimali, quindi %.2f arrotonda a due cifre decimali:
total <- 3 * 4.5 * 1.2
print(sprintf("Total: %.2f", total))Output:
[1] "Total: 16.20"Una larghezza completa il valore fino a quel numero di caratteri: %5d aggiunge spazi a sinistra, %-6s aggiunge spazi a destra e %03d aggiunge zeri. %% stampa un segno di percentuale.
print(sprintf("[%5d]", 42))
print(sprintf("[%-6s]", "tea"))
print(sprintf("%03d", 7))
print(sprintf("%d%%", 85))Output:
[1] "[ 42]"
[1] "[tea ]"
[1] "007"
[1] "85%"sprintf() è vettorializzata: con argomenti vettoriali restituisce una stringa per ogni elemento. cat() con sep = "\n" stampa ogni stringa su una riga separata.
items <- c("tea", "cake")
prices <- c(4, 12.5)
lines <- sprintf("%-5s %6.2f", items, prices)
cat(lines, sep = "\n")Output:
tea 4.00
cake 12.50Sfida
FacileCompleta receipt_line(item, qty, price). Restituisci l'articolo, la quantità e il totale della riga (qty * price) nel formato tea x3 = 13.50: l'articolo, uno spazio, x seguito dalla quantità, poi = e il totale con esattamente due cifre decimali.
Il codice fornito legge l'articolo, la quantità e il prezzo (uno per riga) e stampa il valore restituito.
Provalo tu
receipt_line <- function(item, qty, price) {
# Scrivi il tuo codice qui
""
}
# Codice di input/output fornito: lascialo così com'è
input <- suppressWarnings(readLines(file("stdin")))
cat(receipt_line(input[1], as.integer(input[2]), as.numeric(input[3])), sep = "\n")
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Le stringhe in dettaglio
Sottostringhe con substr()Formattazione con sprintf()Dividere e unireRicerca nelle stringheSostituzione del testoRipasso - Generatore di nomi utente4Matrici
Creazione di matriciIndicizzazione delle matriciRiepiloghi di righe e colonneOperazioni aritmetiche con le matriciRipasso - Schema dei posti a sedere10Flusso di controllo avanzato
La funzione switch()ifelse() vettorialerepeat e breakFunzioni ricorsiveRiepilogo - Classificatore di voti2Ricerche chiave-valore
Ricerche in vettori con nomiControllare le chiaviAggiungere e rimuovere chiaviIterare sui nomiRiepilogo - Sportello titoli5Progetto - Registro dei voti
Aggiungere studentiRegistrare i voti8Ordinamento e raggruppamento
Ordinare i vettoriOrdinare in base a una chiaveRaggruppare con split()Riepiloghi dei gruppiRipasso - Classifica3Insiemi e conteggio
Valori univociOperazioni sugli insiemiTest di appartenenzaConteggio con table()Riepilogo - Ospiti dell’evento6Le funzioni come valori
Funzioni anonimePassare funzioniRestituire funzioniClosure con statoRiepilogo - Regole di sconto9DataFrame
Creare DataFrameColonne e righeFiltrare le righeAggiungere e ordinareRiepilogo - Report delle vendite12Progetto - Gestione delle spese
Registrare le speseSpesa totaleEsercitati da solo: Compilatore R online