これはひどく簡単な要求ですが、私はこれについての解決策をまだ見つけられていないとは思えませんが、私はそれを幸運なことなく遠くまで探し続けてきました。ESS&Knitr/Sweave:Rnwファイルをインタラクティブなセッションにする方法は?
私は.Rnw
ファイルをEmacsに読み込んでいますが、私はM-n s
を使ってコンパイルしています。 すべて正常に動作し、さらにR
バッファを開きます。すばらしいです。しかし、そのバッファー はまったく役に立たない:それは私がソースしたオブジェクトを含んでいない!
例最小限.Rnw
ファイル:
\documentclass{article}
\begin{document}
<<>>=
foo <- "bar"
@
\end{document}
がM-n s
を使用するには、私が今までロードされたセッションで新しいR-バッファを持っていますが、:
> foo
Error: object 'foo' not found
がっかりされます。私は対話的にデータを使いたいと思っています。 これはどのように実現するのですか?私はコードを変更するたびに、ファイルを1行ずつ、または 地域別にC-c C-c
などのようにソースしたくありません。 理想的には、これはRstudioのソース関数と同じで、完全に準備されたRセッション が残っています。
私はまだこの菓子を使っていませんでしたが、これはknitrだけでした。
EDIT:eval=TRUE
チャンクオプションが正しく動作していないようです。
特に、 'knitr'は' knit(...、envir = globalenv()) '(時には' parent ')を除いて 'parent.frame()'のコードをデフォルトで評価します。frame() 'は単に' globalenv() 'であり、時にはそうではありません) –
これを修正したと聞いてうれしいです。ありがとう! @ Yihuiのコメントに沿って、私は '$ EMACS_HOME/site-lisp/ess/etc/ESSR.R" 'の' .ess_weave() 'を編集して' envir = parent 'knit()'のデフォルトの 'envir = parent.frame()'ではなく、.frame(2) '(' command(file、envir = parent.frame(2)) 'のように) (私は最近** knitr **ユーザなので、Sweaveでその編集方法が分からないのです。) –
ありがとうございました! 'ess-swv-processing-command'を設定しても、私のためのトリックはありませんでしたが、私は' envir = globalenv() 'を使っています。私は開発版に切り替えるつもりはないと思っていますが、上流のESSを鷹のように見ます:-) –