Formatierung mit sprintf()
Teil des Abschnitts Logik und Ablaufsteuerung der R-Journey von Coddy. Lektion 2 von 64.
sprintf() erstellt eine Zeichenkette aus einer Vorlage. Jeder Platzhalter % wird durch das nächste Argument ersetzt: %s für Text, %d für ganze Zahlen und %f für Dezimalzahlen.
name <- "Ada"
age <- 36
print(sprintf("%s is %d years old", name, age))Ausgabe:
[1] "Ada is 36 years old"%d akzeptiert nur ganze Zahlen: sprintf("%d", 2.5) wird mit einem Fehler beendet.
Eine Genauigkeit zwischen % und f legt die Anzahl der Dezimalstellen fest, daher rundet %.2f auf zwei Stellen:
total <- 3 * 4.5 * 1.2
print(sprintf("Total: %.2f", total))Ausgabe:
[1] "Total: 16.20"Eine Breite füllt den Wert auf diese Anzahl von Zeichen auf: %5d fügt links Leerzeichen hinzu, %-6s fügt rechts Leerzeichen hinzu und %03d füllt mit Nullen auf. %% gibt ein Prozentzeichen aus.
print(sprintf("[%5d]", 42))
print(sprintf("[%-6s]", "tea"))
print(sprintf("%03d", 7))
print(sprintf("%d%%", 85))Ausgabe:
[1] "[ 42]"
[1] "[tea ]"
[1] "007"
[1] "85%"sprintf() ist vektorisiert: Mit Vektorargumenten gibt es eine Zeichenkette pro Element zurück. cat() mit sep = "\n" gibt jede Zeichenkette in einer eigenen Zeile aus.
items <- c("tea", "cake")
prices <- c(4, 12.5)
lines <- sprintf("%-5s %6.2f", items, prices)
cat(lines, sep = "\n")Ausgabe:
tea 4.00
cake 12.50Aufgabe
EinfachVervollständige receipt_line(item, qty, price). Gib das Produkt, die Menge und die Zeilensumme (qty * price) im Format tea x3 = 13.50 zurück: das Produkt, ein Leerzeichen, x gefolgt von der Menge, dann = und die Summe mit genau zwei Dezimalstellen.
Der bereitgestellte Code liest das Produkt, die Menge und den Preis (jeweils eine Angabe pro Zeile) ein und gibt den zurückgegebenen Wert aus.
Probier es selbst
receipt_line <- function(item, qty, price) {
# Schreibe deinen Code hier
""
}
# Bereitgestellter Ein-/Ausgabecode: belasse ihn wie er ist
input <- suppressWarnings(readLines(file("stdin")))
cat(receipt_line(input[1], as.integer(input[2]), as.numeric(input[3])), sep = "\n")
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik und Ablaufsteuerung
1Strings im Detail
Teilstrings mit substr()Formatierung mit sprintf()Aufteilen und VerbindenStrings durchsuchenText ersetzenWiederholung – Benutzernamen-Generator4Matrizen
Matrizen erstellenMatrizen indizierenZusammenfassungen von Zeilen und SpaltenMatrizenarithmetikRückblick – Sitzplan10Fortgeschrittener Kontrollfluss
Die switch()-FunktionVektorisierter ifelse()repeat und breakRekursive FunktionenRückblick – Notenklassifizierung2Schlüssel-Wert-Suchen
Benannte Vektor-SuchenSchlüssel prüfenSchlüssel hinzufügen und entfernenNamen durchlaufenRückblick – Aktienübersicht5Projekt – Notenbuch
Schüler hinzufügenNoten eintragen3Mengen und Zählen
Eindeutige WerteMengenoperationenZugehörigkeitstestsZählen mit table()Rückblick – Gäste einer Veranstaltung6Funktionen als Werte
Anonyme FunktionenFunktionen übergebenFunktionen zurückgebenClosures mit ZustandRückblick – Rabattregeln9Datenrahmen
Datenrahmen erstellenSpalten und ZeilenZeilen filternHinzufügen und SortierenZusammenfassung – Verkaufsbericht12Projekt – Ausgaben-Tracker
Ausgaben erfassenGesamtausgabenÜbe selbstständig: Online-R-Compiler