2011-09-21 4 views
7

Sweaving lo siguiente:¿Por qué Sweave arroja un error en el código LaTeX que ha sido comentado?

\documentclass{article} 
\begin{document} 
<<>>= 
x <- 5 
y <- 10 
@ 
The value of $z$ is \\ 
%\Sexpr{z} 
\end{document} 

genera el siguiente error:

Error in eval(expr, envir, enclos) : object 'z' not found 
Calls: <Anonymous> -> Sweave -> <Anonymous> -> eval -> eval 
Execution halted 

Si \Sexpr{z} está comentado, ¿por qué está causando un error?

Respuesta

6

Esta respuesta es un marcador de posición para registrar lo que aprendí por mi cuenta. Con mucho gusto aceptaré uno mejor ...

Sweave no analiza el LaTeX, por lo que evaluará cualquier \Sexpr, incluso si está comentado. Por lo tanto, si asignó un valor a z en el fragmento de código, %\Sexpr{z} imprimirá el valor de z. De manera divertida, \Sexpr{#z} suprimirá la impresión del valor de z.

También rastreé this (bastante antigua) la discusión de este tema en una lista de correo.

+2

'%' es el personaje de comentario de Tex, no de Sweave. '#' es el caracter de comentario para R, pero solo se entiende en las expresiones analizadas en el entorno Sweave, es decir, dentro de '<<>> == ... @' o '\ Sexpr {}' – James

Cuestiones relacionadas