
Estoy usando el knitr
paquete para poner mi R
salida en PDF. Tengo dos problemas al usar xtable
:
Cuando los datos de mi tabla tienen caracteres como este:
[
,]
en ellos, la conversión de.tex
a.pdf
falla con errorCuando uso el paquete
seqinr:stresc()
para escapar de dichos caracteres, puedo al menos mostrar el contenido (mejor que la situación 1 anterior). Pero sigue existiendo el problema de que el PDF final acaba mostrándose así:\lbrack{}ABD\rbrack{} r22
en lugar de mostrarse así:[ABD] r22
.
¿Alguien podría arrojar alguna luz sobre cómo podemos resolver esto?
Respuesta1
Esto puede suceder si los nombres de las filas comienzan con un corchete izquierdo, en cuyo caso se produce el problema que David describió en su comentario. No he visto que haya un problema con los corchetes en el cuerpo de la tabla (pero puede suceder en algún caso). Si eso es lo que está viendo, puede agregar un sanitize.rownames.function
argumento personalizado a la print.xtable
función para envolverlos entre llaves.
\documentclass{article}
\begin{document}
<<>>=
library("xtable")
DF <- data.frame(x=c("[]", "bleah", "foo[", "[", "]"),
stringsAsFactors = FALSE)
rownames(DF)[1:2] <- c("[1,2]", "[3,4]")
@
<<results="asis">>=
print(xtable(DF),
sanitize.rownames.function = function(x) paste0("{",x,"}"))
@
\end{document}
Este .tex
archivo generado a partir de este (no se muestra) dará un PDF válido, donde sin el sanitize.rownames.function
, dará un error:
[....]
! Illegal unit of measure (pt inserted).
<to be read again>
>
l.83 [3,4]
& bleah \\
?
! Emergency stop.
<to be read again>
>
l.83 [3,4]
& bleah \\
! ==> Fatal error occurred, no output PDF file produced!
[....]
Tenga en cuenta que si tiene otros caracteres especiales que también deben desinfectarse en los nombres de sus filas, también deberá incluirlos en su función personalizada, ya que la función de desinfección predeterminada no se utiliza si proporciona una.