2013-03-26 3 views
12

this answer에서 @Yihui는 knitr이 지구 환경을 사용한다고 말했습니다. 이것은 나에게 혼란 스러웠다. 나의 경험은 그렇지 않다는 것이었다. 나는 실제로는 결코 knit을 사용하지 않지만, 나는 보통 PDF로 곧바로 간다.knit2pdf가 글로벌 환경을 사용할 수 있습니까?

약간의 실험에서 knit은 글로벌 환경 (또는 사용자가 envir 인수를 사용하여 지정한 환경)을 사용하지만, knit2pdf은 사용하지 않는 것 같습니다.

최소 예 : global_test.Rnw이 파일

\documentclass{article} 
\begin{document} 
<<>>= 
    print(x) 
@ 
\end{document} 

R 스크립트 :

x <- "Hello World" 
knit(input="global_test.Rnw") 
# Works as expected, could now call tools::texi2pdf to generate pdf. 

knit2pdf(input="global_test.Rnw") 
# Doesn't 

후자는 표시되지 않습니다 PDF 파일을 생성하고 경고 제공 :

running command '"C:\PROGRA~2\MIKTEX~1.9\miktex\bin\texi2dvi.exe" --quiet --pdf 
"global.pdf" -I "C:/PROGRA~1/R/R-215~1.3/share/texmf/tex/latex" -I 
"C:/PROGRA~1/R/R-215~1.3/share/texmf/bibtex/bst"' had status 1 

을 나는 knit2pdf (envir = globalenv())에 환경을 전달하려고 시도했다. e ...이 전달되면 사용하지 않은 인수 오류가 발생합니다.

일반적으로, 나는 지구 환경을 참조하면, 빈약 한 형태이지만, knit2pdf 함께 할 수있는, 또는 명시 적으로 환경을 전달하는 방법이 알고 또는 동일한에 @Ramnath's answer 같이 brewsprintf을 개시 내가 더 잘 해요 위의 질문?

내 경우에는 knit2pdf이 손쉽게 처리하는 XeLaTeX로 컴파일해야하기 때문에 tools::texi2pdf이 유용하다고 생각하지 않습니다.

+0

'knit2pdf'의'envir' 매개 변수를 명시 적으로 설정하려 했습니까? – krlmlr

+0

그래, 방금 사용하지 않은 인수 오류가 발생합니다. – Gregor

+0

전역 변수를 참조하지 않고 해 보셨습니까? R 코드의 한 줄이'print ("Hello World")'일 때 (즉, 전역 변수에 대한 명시 적 참조가 없을 때)'knit2pdf()'를 사용할 때와 똑같은 오류가 발생합니다 ... R-devel과'knitr_1.1'을 사용하는 Windows XP 박스에서 MikTeX 배포판을 설치합니다. –

답변

7

질문의 예와 관련된 문제는 환경과 관련이없는 것처럼 보입니다. output 인수가 knit2pdf을 벗어나면 모든 것이 올바르게 컴파일되고 경고없이 컴파일됩니다.

참고로, Windows 7의 R 2.15.3에서 knitr 1.1을 사용했습니다. Yihui가 knit2pdf (이는 출력 파일 경로를 허용하지 않는 tools::texi2pdf)의 버그 인 것 같습니다.).

업데이트 : 업데이트 버전은 knitr, available here입니다.

그것은 또한 당신이 전역 변수에 액세스 할 수 있도록하려면, 그래서 에서 Compile PDF 버튼 RStudio는, 현재의 환경을 사용하지 않음을 지적하고 RStudio를 사용하는 가치, 적절한 knit 함수를 명시 적으로 호출을 바로 가기에 의존하기보다. 실제로 knit2pdf을 직접 사용하지 않고 rmarkdown::render을 호출합니다.

+0

문제를 신고 해 주셔서 감사합니다. 실제 이야기는'knitr' 1.1에는'envir' 인자가 없습니다. 'knitr'의 개발 버전은 그것을 추가했지만 나중에'output' 인수를 제거했습니다. 이제 최신 개발 버전은 두 인자를 모두 가지고 있으며'knit2pdf()'는 이제는 잘 작동 할 것입니다. –

+1

@Yihui 감사합니다! 멋진 패키지에 감사드립니다! – Gregor

+0

R markdown과 함께 Rstudio를 사용하고 있습니다. Markdown 문서에도 적용됩니까? 나는 캐시 된 덩어리 안에 스크립트를 실행하기 위해 source()를 사용하고 있습니다. 그 스크립트에서 계산 된 객체를 나중의 청크에서 사용하려고하지만 그 객체는 나중에 청크에서 사용할 수있는 것처럼 보이지 않습니다. 내가해야 할 일을 분명히 할 수 있니? –

관련 문제