[英]ESS & Knitr/Sweave: How to source the Rnw file into an interactive session?
這是一個非常簡單的請求,我無法相信我還沒有找到解決方案,但我一直在尋找它,沒有運氣。
我在Emacs中加載了一個.Rnw
文件,我使用Mn s
來編譯它。 一切都運作良好,甚至打開一個R
緩沖區。 大。 但是那個緩沖區完全沒用:它不包含我剛剛提供的對象!
示例最小.Rnw
文件:
\documentclass{article}
\begin{document}
<<>>=
foo <- "bar"
@
\end{document}
使用Mn s
,我現在有一個新的R緩沖區,會話已加載,但是:
> foo
Error: object 'foo' not found
這令人失望。 我想以交互方式使用數據。 我如何實現這一目標? 我不希望每次更改代碼時逐行或逐個區域地使用Cc Cc
或類似內容來獲取文件。 理想情況下,它應該像RStudio的源函數一樣,讓我有一個完全准備好的R會話。
我還沒有用sweave試過這個,只有knitr。
編輯: eval=TRUE
塊選項似乎沒有導致正確的行為。
打開一個交互式R會話,然后直接調用Sweave,我相信這樣(雖然未經測試)。 knitr
以相同的方式工作,但您需要先加載knitr庫。
> Sweave("yourfile.Rnw")
但是,這里有一些潛在的危險。 如果您在執行其他操作后在會話中調用Sweave,則您的代碼可以使用工作空間中以前的內容,從而使您的結果無法再生。
最近在ESS中更改了此行為。 現在,sweave和knitr直接在全局環境中執行,就像在命令行中自己編寫一樣。 所以等待幾周,直到ESSv13.09出來或使用開發版本。
或者,您也可以將ess-swv-processing-command
為“%s(%s)”,除自動庫加載外,您將獲得相同的結果。
對於記錄,knitr(與sweave相反)評估其自身環境中的所有內容,除非您另外指示。
[編輯:出了點問題。 我再也看不到正確的.ess_weave了。 可能一些git再次提交了混亂。 所以它在13.09沒有修復。 立即修復它。 抱歉。]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.