2013-05-07 2 views
2

다음 구조의 문서가 있습니다.LaTeX 및 knitr - R 삽입 오류 코드

knit('test.rnw') 

processing file: test.rnw 
    |.......               | 11% 
    ordinary text without R code 

    |..............             | 22% 
label: unnamed-chunk-1 
Quitting from lines 12-13 (test.rnw) 
Error in pdf_doc(file, cache = FALSE) : 
    'file' must be a character string or a file/raw connection 

내가이 오류를 이해하지 않고 지속적으로 문제를 복제 할 수없는 것 : 나는 R에서 다음 명령을 실행하면

\documentclass[11pt]{article} 

\begin{document} 
\title{Something} 
\author{Andreas} 
\date{May 8th, 2013} \maketitle 

\section{Introduction} 
\paragraph{...} 

<<>>= 
2+2 
@ 

<<>>= 
require('tm') 
@ 

\begin{itemize} 
    \item{asdf} 
\end{itemize} 

some text here. 

\section{Intro} 

More text. 

\section{Other Stuff} 

<<>>= 
pdf <- readPDF(PdftotextOptions = '-layout') 
@ 

<<eval=FALSE>>= 
text <- pdf(elem = list(uri = file.name), 
      language = 'en', 
      id = 'id1') 
@ 

\end{document} 

, 나는 다음과 같은 오류가 발생합니다. 나는 빈 문서에서 시작하여 잘 동작하는 R 코드 조각을 붙였다. 그런 다음 컴파일이 중단되는 지점에 도달합니다. 그런 다음 최근에 추가 된 코드 덩어리를 삭제할 수 있지만 여전히 동일한 오류가 발생합니다.

세션 정보 :

R version 3.0.0 (2013-04-03) 
Platform: x86_64-w64-mingw32/x64 (64-bit) 

locale: 
[1] LC_COLLATE=English_United States.1252 
[2] LC_CTYPE=English_United States.1252 
[3] LC_MONETARY=English_United States.1252 
[4] LC_NUMERIC=C       
[5] LC_TIME=English_United States.1252  

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

other attached packages: 
[1] tm_0.5-8.3 knitr_1.2 

loaded via a namespace (and not attached): 
[1] digest_0.6.3 evaluate_0.4.3 formatR_0.7 slam_0.1-28 stringr_0.6.2 
[6] tools_3.0.0 

어떤 제안? 자세한 정보가 필요한 경우 알려주십시오. 고맙습니다.

답변

4

귀하의 질문은 완전히 복제 할 수있는 것은 아니지만 잠재적으로 어떤 일이 일어나고 있는지를 나타낼 수 있습니다. file.name 변수가 pdf() 명령에 전달되었지만 knitr에서 찾을 수 없습니다. 그리고 knitr 문서에서 정의 된 적이 없으므로 코드를 실행하려고 할 때도 마찬가지입니다.

knitr 파일을 컴파일 할 때 R은 새로운 빈 환경에서 시작됩니다. 이전에 작업 공간에 file.name을 설정했다면 knitr은 자동으로 작업 공간을로드하지 않습니다. 사용하기 전에 당신은 덩어리에서 설정해야합니다 : 파일을로드하는 경우

<<>>= 
require('tm') 
file.name <- #something# 
@ 

, 당신이 일하러 가야 절대 경로 또는 setwd() 함께 놀러 할 수 있습니다.

업데이트 :

당신은 실제로 text을 평가하려고하지 않는, 그래서 정의되지 않은 file.name는 문제가되지 않습니다. 주요 문제는 내장 된 pdf() 함수의 이름을 바꾸는 것입니다. pdf <- readPDF(PdftotextOptions = '-layout')을 사용할 때 오류가 발생하지만 pdf.asdf <- readPDF(PdftotextOptions = '-layout')과 같은 다른 변수 이름을 사용하면 일관되게 컴파일됩니다.

+1

위대한 추측과 나는 당신이 옳았을 것입니다! knitr은 당신이 입력 할 경우 지구 환경에 접근 할 수 있고, 콘솔에'knit2pdf()'라고 명시 적으로 말한 것에 주목해야한다. 그러나 RStudio에서 "Compile PDF"버튼을 사용하면 전역 환경에 액세스 할 수 없습니다. – Gregor

+1

그 특별한 덩어리에서, 실제로 어떤 것도 평가하지 않고 의사 R 코드를 표시하고 싶습니다. 나는 틀릴 수도 있지만 "eval = FALSE"옵션을 사용하면 실제적으로 명령을 실행하지 않고 R 코드를 "knitr"형식으로 표시 할 수있을 것이라고 생각했습니다. 내 코드의 아무 곳에 나 "file.name"이라는 제목의 오브젝트가 없다는 것이 맞습니다. 이 코드 덩어리에서 실제로 아무것도하지 않고 명령 구문을 설명하기 만하면되었습니다. – Andreas

+0

Ah. 내가 참조. 내 대답을 업데이트했습니다. – Andrew

관련 문제