簡體   English   中英

ESS&Knitr / Sweave:如何將Rnw文件導入交互式會話?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM