
Ich verwende das knitr
Paket, um meine R
Ausgabe in PDF umzuwandeln. Bei der Verwendung habe ich zwei Probleme xtable
:
Wenn meine Tabellendaten Zeichen wie diese enthalten,
[
schlägt]
die Konvertierung von.tex
in.pdf
mit dem Fehler fehlWenn ich das Paket verwende,
seqinr:stresc()
um solche Zeichen zu maskieren, kann ich den Inhalt zumindest anzeigen lassen (besser als in Situation 1 oben). Aber es bleibt das Problem, dass das endgültige PDF am Ende so angezeigt wird:\lbrack{}ABD\rbrack{} r22
statt so:[ABD] r22
.
Kann uns jemand erklären, wie wir das Problem lösen können?
Antwort1
Dies kann passieren, wenn Ihre Zeilennamen mit einer linken Klammer beginnen. In diesem Fall tritt das Problem auf, das David in seinem Kommentar beschrieben hat. Ich habe noch kein Problem mit Klammern im Hauptteil der Tabelle gesehen (aber es kann in einigen Fällen vorkommen). Wenn dies bei Ihnen der Fall ist, können Sie sanitize.rownames.function
der print.xtable
Funktion ein benutzerdefiniertes Argument hinzufügen, um diese in Klammern einzuschließen.
\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}
Die .tex
daraus generierte Datei (nicht angezeigt) ergibt ein gültiges PDF. Ohne das sanitize.rownames.function
wird ein Fehler ausgegeben:
[....]
! 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!
[....]
Beachten Sie, dass Sie, falls Ihre Zeilennamen möglicherweise andere Sonderzeichen enthalten, diese ebenfalls bereinigt werden müssen, diese auch in Ihre benutzerdefinierte Funktion aufnehmen müssen, da die Standardbereinigungsfunktion nicht verwendet wird, wenn Sie eine solche angeben.