2010-08-18 5 views
22

Ich versuche, eine Zeile zu drucken, die eine Mischung aus einem String und eine Variablen zu drucken. Hier ist die R-Code derzeit:Wie R-Variablen in der Mitte des String

cat("<set name=\",df$timeStamp,\" value=\",df$Price,\" ></set>\n") 

Hier ist, was es ausdruckt, wenn ausführen:

<set name=",df$timeStamp," value=",df$Price," ></set> 

ich möchte den Wert von df $ timestamp und df $ Preis haben ausgedruckt. Ich möchte zum Beispiel folgendes:

<set name="2010-08-18 12:00:59" value="17.56" ></set> 

Irgendeine Idee, wo ich falsch im Code gehe?

Jedwedes Hilfe sehr geschätzt.

Grüße,

Anthony.

Antwort

19

Das Problem ist, dass R nicht wertet jede Ausdruck die Anführungszeichen withing - es druckt nur die Zeichenfolge, die Sie definiert . Es gibt mehrere Möglichkeiten. Zum Beispiel können Sie die sprintf Funktion (nicht getestet, weil Sie ein reproduzierbares Beispiel nicht zur Verfügung stellen):

cat(sprintf("<set name=\"%s\" value=\"%f\" ></set>\n", df$timeStamp, df$Price)) 
+0

Wenn einfache Anführungszeichen verwendet wird, macht dies die ganze Sache einfacher zu lesen ... ' cat (sprintf (' \ n‘, df $ timestamp , df $ Preis)) ' – drmariod

13

Sie verpassen einige zusätzliche Anführungszeichen. Versuchen Sie folgendes:

cat('<set name=\"',df$timeStamp,'\" value=\"',df$Price,'\" ></set>\n') 

Hier ist ein funktionierendes Beispiel dafür, was ich meine:

cat("a b c -> \"", letters[1:3], "\"\n") 
+13

Wenn Sie super-glatt sein, können Sie vermeiden, mit Anführungszeichen zu entkommen (in diesem Fall) durch einfache Anführungszeichen mit dem String und doppelte Anführungszeichen in ihn zu beschreiben: 'cat (‚abc -> „‘, Buchstaben [1: 3], "" \ n ') ' –

1

Cat funktioniert gut ohne zusätzliche Bibliotheken und entkommt:

cat('<set name="', df$timeStamp, '" value="', df$Price, '"></set>\n', sep='') 

Ausgabe:

<set name="2010-08-18 12:00:59" value="17.56"></set> 
+0

Das ist fast identisch mit Shanes Antwort. Das Hinzufügen des "sep" -Arguments sollte eher ein Kommentar zu seiner Antwort als ein neuer Beitrag sein. –

Verwandte Themen