5

yihui は、さまざまなエンジンにキャッシュ オプションを使用する例を示しています。

https://github.com/yihui/knitr-examples/blob/master/023-engine-python.Rmd

Pythonで動作させることができないようです。

以下の作品

```{r,engine='python',cache=TRUE}
x=10
print x
```

しかし、これは機能しません

```{r,engine='python',cache=TRUE}
x = 10
```

```{r,engine='python',cache=TRUE}
print x
```

誰にもアイデアがありますか?

4

1 に答える 1

5

チャンク オプションcacheは、言語以外のブロックで定義されたすべての変数を保存しませんR。ただし、印刷された出力を保存しているので、時間がかかるものを計算しても、結果を再計算する必要はありません。ウェブサイトからknitr

(デフォルト) を除きengine='R'、すべてのチャンクは個別のセッションで実行されるため、変数を直接共有することはできません。以前のチャンクで作成されたオブジェクトを利用したい場合は、通常、それらをファイルに書き込む必要があります (副作用として)。bash エンジンの場合、 Sys.setenv()変数を R から bash にエクスポートするために使用できます (例)。

シェルの環境にいくつかの値を保存し、環境を読み取ることによって他のセルからそれらの値を取得することができます。これは、Polyglot の例で Yihui が取ったアプローチです。そのため、Python の場合、値を文字列としてフォーマットして に渡すことができれば、 をsys.setenv()呼び出して別のセルでその値を使用できます (別の Python セッションとして実行) sys.getenv()

Cとはいえ、とFortranエンジンのアプローチについては少し混乱しています。それらは、呼び出された関数または呼び出された関数を使用して.C()、後のチャンクでコンパイルされた関数にアクセスできるようです。しかし、Python には同等のものはないようです。.Fortran()

于 2016-01-21T22:27:44.433 に答える