2010-08-18 21 views
22

Sto provando a stampare una riga che contiene una combinazione di una stringa e una variabile. Ecco il codice R al momento:Come stampare le variabili R nel mezzo della stringa

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

Ecco cosa esso stampa quando viene eseguito:

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

lo vorrei avere il valore di df $ timeStamp e df $ Prezzo stampato. Vorrei ad esempio il seguente:

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

Qualche idea di dove sto andando male nel codice?

Qualsiasi aiuto è molto apprezzato.

Cordiali saluti,

Anthony.

risposta

19

Il problema è che R non valuta alcun espressione withing le virgolette - si tratta solo di stampa la stringa definita . Ci sono molti modi per aggirarlo. Ad esempio, è possibile utilizzare la funzione sprintf (non testata perché non si fornisce un esempio riproducibile):

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

Quando si usano le virgolette singole, questo rende tutto più facile da leggere ... ' cat (sprintf (' \ n ', df $ timeStamp , df $ Prezzo)) ' – drmariod

13

Ti mancano alcune citazioni aggiuntive. Prova questo:

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

Ecco un esempio di lavoro di ciò che intendo:

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

Se vuoi essere super-slick, puoi evitare di dover evadere dalle virgolette (in questo caso) usando le virgolette singole per delineare la stringa e le virgolette al suo interno: 'cat ('abc ->"', letters [1: 3], '"\ n ') ' –

1

Cat funziona bene senza librerie extra e fugge:

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

uscita:

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

Questo è quasi identico alla risposta di Shane. L'aggiunta dell'argomento 'sep' dovrebbe probabilmente essere un commento sulla sua risposta piuttosto che un nuovo post. –

Problemi correlati