Gibt es eine Möglichkeit, Text und variablen Inhalt in derselben Zeile zu drucken? Beispielsweise,
wd <- getwd()
print("Current working dir: ", wd)
Ich konnte nichts an der Syntax finden, was mir dies erlauben würde.
Gibt es eine Möglichkeit, Text und variablen Inhalt in derselben Zeile zu drucken? Beispielsweise,
wd <- getwd()
print("Current working dir: ", wd)
Ich konnte nichts an der Syntax finden, was mir dies erlauben würde.
Antworten:
Sie können paste
mit verwendenprint
print(paste0("Current working dir: ", wd))
oder cat
cat("Current working dir: ", wd)
cat()
bekomme ich eine NULL
am Ende :(
print(cat("test", var))
was sein solltecat("test", var)
{glue} bietet eine viel bessere String-Interpolation, siehe meine andere Antwort . Auch, wie Dainis zu Recht erwähnt,
sprintf()
ist dies nicht ohne Probleme.
Es gibt auch sprintf()
:
sprintf("Current working dir: %s", wd)
Verwenden Sie zum Drucken auf der Konsolenausgabe cat()
oder message()
:
cat(sprintf("Current working dir: %s\n", wd))
message(sprintf("Current working dir: %s\n", wd))
sprintf
nicht gedruckt wird, sondern nur die Zeichenfolge formatiert wird. In Skripten ist so etwas wie print (sprintf (...)) erforderlich.
Oder mit message
message("Current working dir: ", wd)
Die Antwort von @ agstudy ist hier besser geeignet
Der einfachste Weg, dies zu tun, ist zu verwenden paste()
> paste("Today is", date())
[1] "Today is Sat Feb 21 15:25:18 2015"
paste0()
würde zu folgendem Ergebnis führen:
> paste0("Today is", date())
[1] "Today isSat Feb 21 15:30:46 2015"
Beachten Sie, dass zwischen der Zeichenfolge und x kein Standardtrennzeichen steht. Die Verwendung eines Leerzeichens am Ende der Zeichenfolge ist eine schnelle Lösung:
> paste0("Today is ", date())
[1] "Today is Sat Feb 21 15:32:17 2015"
Kombinieren Sie dann eine der beiden Funktionen mit print()
> print(paste("This is", date()))
[1] "This is Sat Feb 21 15:34:23 2015"
Oder
> print(paste0("This is ", date()))
[1] "This is Sat Feb 21 15:34:56 2015"
Wie andere Benutzer angegeben haben, können Sie auch verwenden cat()
Das {glue} -Paket bietet String-Interpolation. Im Beispiel {wd}
wird durch den Inhalt der Variablen ersetzt. Komplexe Ausdrücke werden ebenfalls unterstützt.
library(glue)
wd <- getwd()
glue("Current working dir: {wd}")
#> Current working dir: /tmp/RtmpteMv88/reprex46156826ee8c
Erstellt am 13.05.2019 durch das reprex-Paket (v0.2.1)
Beachten Sie, dass die gedruckte Ausgabe keine [1]
Artefakte und "
Anführungszeichen enthält, für die andere Antworten verwendet werden cat()
.
Wie andere Benutzer sagten, ist cat () wahrscheinlich die beste Option.
@krlmlr schlug die Verwendung von sprintf () vor und es ist derzeit die drittplatzierte Antwort. sprintf () ist keine gute Idee. Aus der R-Dokumentation:
Die Formatzeichenfolge wird an die Sprintf-Funktion des Betriebssystems übergeben, und falsche Formate können dazu führen, dass letztere den R-Prozess zum Absturz bringen.
Es gibt keinen guten Grund, sprintf () anstelle von cat oder anderen Optionen zu verwenden.
sep = ''
oder Sie erhalten einen zusätzlichen Platz.