
knitr
내 R
출력을 PDF로 저장하기 위해 패키지를 사용하고 있습니다 . 다음을 사용하는 데 두 가지 문제가 있습니다 xtable
.
[
내 테이블 데이터에 다음 과 같은 문자가 있으면 오류로 인해 에서 로의 변환이 실패 합니다]
..tex
.pdf
이러한 문자를 이스케이프 처리하기 위해 패키지를 사용하면
seqinr:stresc()
최소한 콘텐츠를 표시할 수 있습니다(위의 상황 1보다 낫습니다). 그러나 최종 PDF가 다음과 같이 표시되는\lbrack{}ABD\rbrack{} r22
대신 다음과 같이 표시된다는 문제가 남아 있습니다[ABD] r22
.
이 문제를 어떻게 해결할 수 있는지 알려줄 수 있는 사람이 있나요?
답변1
행 이름이 왼쪽 대괄호로 시작하는 경우 이런 일이 발생할 수 있습니다. 이 경우 David가 설명에서 설명한 문제가 발생합니다. 나는 테이블 본문의 괄호에 문제가 있는 것을 본 적이 없습니다(그러나 어떤 경우에는 발생할 수 있습니다). 이것이 보고 있는 것이라면 함수 sanitize.rownames.function
에 사용자 정의 인수를 추가하여 print.xtable
이를 중괄호로 묶을 수 있습니다.
\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}
이 파일(표시되지 않음)에서 생성된 이 .tex
파일은 유효한 PDF를 제공하지만 가 없으면 sanitize.rownames.function
오류가 발생합니다.
[....]
! 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!
[....]
행 이름에 삭제해야 하는 다른 특수 문자가 있을 수 있는 경우 이를 사용자 지정 함수에 포함해야 합니다. 이를 제공하면 기본 삭제 함수가 사용되지 않기 때문입니다.