15.2 Python コードの実行と双方向処理

あなたが Python を好んでいることは知っていますので, とてもはっきりと言ってしまいましょう. R Markdown と knitr はなんと Python をサポートしています.

Python のコードチャンクを R Markdown 文書に加えるには チャンクヘッダ ```{python} を使うことができます. 例えばこのように.

```{python}
print("Hello Python!")
```

いつもどおりにチャンクヘッダに echo = FALSE or eval = FALSE といったチャンクオプションを追加することができます. Python の matplotlib パッケージで描かれたグラフもサポートしています.

R Markdown と knitr の Python サポートは reticulate パッケージ (Ushey, Allaire, and Tang 2021) に基づいており, このパッケージの重要な機能の1つは Python と R の双方向的なコミュニケーションを可能にすることです. 例えば reticulatepy オブジェクトを介して R セッションから Python の変数にアクセスしたり作成したりすることもできます.

```{r, setup}
library(reticulate)
```

Python セッションで変数 `x` を作成する

```{python}
x = [1, 2, 3]
```

R コードチャンクで Python 変数 `x` にアクセスする

```{r}
py$x
```

R を使って Python セッションで新しい変数 `y` を作成し,
`y` にデータフレームを与える

```{r}
py$y <- head(cars)
```

Python で変数 `y` を表示する

```{python}
print(y)
```

reticulate パッケージに関する詳細については, https://rstudio.github.io/reticulate/ のドキュメントを見ることもできます.

参考文献

Ushey, Kevin, JJ Allaire, and Yuan Tang. 2021. Reticulate: Interface to Python. https://github.com/rstudio/reticulate.