2010-08-18 87 views
22

Estoy tratando de imprimir una línea que contiene una mezcla de String y una variable. Aquí está el código R en la actualidad:Cómo imprimir variables R en medio de String

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

aquí es lo que se imprime cuando se ejecuta:

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

me gustaría tener el valor de df $ timeStamp y df $ Precio impreso. Me gustaría, por ejemplo, lo siguiente:

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

Alguna idea de dónde voy mal en el código?

Cualquier y toda ayuda muy apreciada.

Saludos,

Anthony.

Respuesta

19

El problema es que R no evalúa cualquier expresión withing las comillas - se acaba de mostrar la cadena que ha definido . Hay muchas formas de resolverlo. Por ejemplo, puede utilizar la función sprintf (no probado, ya que no proporciona un ejemplo reproducible):

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

Al usar comillas simples, esto hace que todo sea más fácil de leer ... ' cat (sprintf (' \ n ', df $ timeStamp , df $ Price)) ' – drmariod

13

Faltan algunas cotizaciones adicionales. Prueba esto:

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

Aquí hay un ejemplo práctico de lo que quiero decir:

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

Si quiere ser super-hábil, puede evitar tener que escapar de las comillas (en este caso) usando comillas simples para delinear la cadena y las comillas dobles dentro de ella: 'cat ('abc ->"', letras [1: 3], '"\ n ') ' –

1

gato funciona muy bien sin bibliotecas adicionales y se escapa:

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

de salida:

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

Esto es casi idéntico a la respuesta de Shane. La adición del argumento 'sep' probablemente debería ser un comentario sobre su respuesta en lugar de una nueva publicación. –

Cuestiones relacionadas