Drucken von Zeilenumbrüchen mit print () in R.


111

Ich versuche, eine mehrzeilige Nachricht in R zu drucken. Zum Beispiel:

print("File not supplied.\nUsage: ./program F=filename",quote=0)

Ich bekomme die Ausgabe

File not supplied.\nUsage: ./program F=filename

anstelle des gewünschten

File not supplied.
Usage: ./program F=filename

Antworten:


130

Eine Alternative zu cat()ist writeLines():

> writeLines("File not supplied.\nUsage: ./program F=filename")
File not supplied.
Usage: ./program F=filename
>

Ein Vorteil ist, dass Sie nicht daran denken müssen, ein "\n"an die übergebene Zeichenfolge anzuhängen cat(), um nach Ihrer Nachricht eine neue Zeile zu erhalten. Vergleichen Sie z. B. das Obige mit derselben cat()Ausgabe:

> cat("File not supplied.\nUsage: ./program F=filename")
File not supplied.
Usage: ./program F=filename>

und

> cat("File not supplied.\nUsage: ./program F=filename","\n")
File not supplied.
Usage: ./program F=filename
>

Der Grund, warum Sie print()nicht das tun, was Sie wollen, ist, dass print()Ihnen eine Version des Objekts aus der R-Ebene angezeigt wird - in diesem Fall handelt es sich um eine Zeichenfolge. Sie müssen andere Funktionen wie cat()und verwenden writeLines(), um die Zeichenfolge anzuzeigen. Ich sage "eine Version", weil die Genauigkeit in gedruckten Zahlen verringert werden kann und das gedruckte Objekt beispielsweise durch zusätzliche Informationen erweitert werden kann.


25

Du kannst das:

cat("File not supplied.\nUsage: ./program F=filename\n")

Beachten Sie, dass catein returnWert von hat NULL.


3
Aber vergessen Sie nicht die nachfolgende neue Zeile.
Hadley

+1 @Shane Ich brauchte die Katze ("\ n") für etwas anderes, da dies geholfen hat! Vielen Dank
Alos

7

Mit writeLines können Sie auch auf das Zeilenumbruchzeichen "\ n" verzichten c(). Wie in:

writeLines(c("File not supplied.","Usage: ./program F=filename",[additional text for third line]))

Dies ist hilfreich, wenn Sie eine mehrzeilige Nachricht mit kombinierter fester und variabler Eingabe schreiben möchten, z. B. den [zusätzlichen Text für die dritte Zeile] oben.


-1

Sie können auch eine Kombination aus catund verwendenpaste0

cat(paste0("File not supplied.\n", "Usage: ./program F=filename"))

Ich finde dies nützlicher, wenn Variablen in den Ausdruck aufgenommen werden. Beispielsweise:

file <- "myfile.txt"
cat(paste0("File not supplied.\n", "Usage: ./program F=", file))
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.