4

これが思ったほど単純ではないことを願っています。基本的なディレクトリを設定しました:

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を使用しているため、そうは思いません)。これを処理する方法について何か考えはありますか?私のグーグルフーはここで私を失敗させました...

4

1 に答える 1

6

申し訳ありませんが、以外のエンジンのパスの問題に十分な注意を払っていませんでしたR。現在、この問題はGithubの開発バージョンで修正されています。

于 2013-03-20T05:40:25.087 に答える