[英]Can knit2pdf use the global environment?
在這個答案中 ,@Yihui說knitr
使用全球環境。 這讓我很困惑 - 我的經歷是,它沒有。 我從來沒有真正使用knit
,我通常直接使用PDF。
在一個小實驗,似乎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()
希望這將是...
傳遞,我只是得到一個未使用的參數錯誤。
一般來說,我知道引用全局環境的形式很差,但有沒有辦法用knit2pdf
來實現,或者明確地傳遞一個環境,或者我最好使用brew
和sprintf
就像在@ Ramnath對上面同一個問題的回答一樣?
在我的使用情況下,我不認為tools::texi2pdf
因為我需要XeLaTeX,其編譯為有用knit2pdf
輕松處理。
問題中的示例問題似乎與環境無關。 如果output
參數不在knit2pdf
那么所有內容都將正確編譯並且沒有警告。
作為參考,我在Windows 7上的R 2.15.3上使用了knitr 1.1。我會讓Yihui知道它似乎是knit2pdf
一個錯誤(它調用tools::texi2pdf
,它不接受輸出文件路徑) 。
更新:問題已在knitr
的開發版本中修復, 可在此處獲得 。
還值得注意的是, RStudio 中的Compile PDF
按鈕不使用您當前的環境,因此如果您想要訪問全局變量並使用RStudio,請顯式調用相應的knit
函數,而不是依賴於快捷方式。 實際上,它不直接使用knit2pdf
,而是調用rmarkdown::render
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.