これが思ったほど単純ではないことを願っています。基本的なディレクトリを設定しました:
root --> Paper
--> Code
私が書いている論文の場合。PaperディレクトリのknitrドキュメントからCodeディレクトリのPythonスクリプトを呼び出したい(このようなものですが、Rの代わりにPythonを使用します)。したがって、次のようになります。
Pythonスクリプトtestit.py
## @knitr testit
import os
print os.getcwd()
コードディレクトリに保存されたknitrドキュメントtest.Rnw:
\documentclass{article}
\begin{document}
<<setup,echo=FALSE>>=
read_chunk("testit.py")
@
<<testit,engine='python'>>=
@
\end{document}
私がPDFにコンパイルするとき、答えは正しいです:
## /Users/blah/foo/bar/Code
ただし、ドキュメントtest-2.RnwはPaperディレクトリに保存されています。
\documentclass{article}
\begin{document}
<<setup,echo=FALSE>>=
opts_knit$set(root.dir="../Code/")
read_chunk("../Code/testit.py")
@
<<testit,engine='python'>>=
@
\end{document}
出力:
## /Users/blah/foo/bar/Paper
root.dirは、Rチャンクの場合のように、ここでは明らかな効果はありません。また、Pythonチャンクのディレクトリを変更しようとする他の方法がわかりません。PythonスクリプトでCodeディレクトリ内のファイルを操作したいのですが、もちろんそれらを見つけることができないため、これは問題です。Pythonスクリプトでディレクトリの変更をハードコーディングすることはできますが、それは壊れやすいようです。スクリプトの引数としてルートディレクトリをPythonインタープリターに直接渡すこともできれば幸いです(ただし、knitrはpython -cを使用しているため、そうは思いません)。これを処理する方法について何か考えはありますか?私のグーグルフーはここで私を失敗させました...