RStudioでR MarkdownからPythonを使う際に、
pandasとかscikit-learnとかが入っているPython環境を指定したかったので、
やり方をまとめました。

reticulateというRからPythonを呼ぶためのpackageを使います。

R Interface to Python | reticulate
https://rstudio.github.io/reticulate/

設定手順

reticulateをインストールする。

$ R
> install.packages("reticulate")

RprofileでRETICULATE_PYTHONに実行したいPythonのパスを指定する。

~/.Rprofile

Sys.setenv(RETICULATE_PYTHON = '~/.anyenv/envs/pyenv/versions/anaconda3-5.3.1/bin/python')
reticulate::import("sys")

# ~/.anyenv/envs/pyenv/versions/anaconda3-5.3.1/bin/pythonの箇所に、
# 実行したいPythonのパスを指定。
# この例では「anyenv」経由でインストールした「anaconda3-5.3.1」を指定している。

実行

R Markdownで、以下のようなコードブロックを作り、
Run Current Chunkすると、
Pythonのコードが実行出来ます。

```python
import pandas as pd
print(pd.DataFrame())
```
Empty DataFrame
Columns: []
Index: []

pandasが利用可能になっていること確認出来ます。

# 設定手順を行っておらず、
# システムデフォルトのPythonにpandasが入っていないケースではエラーになる。

参考情報

以下を参考にしました。

Python Version Configuration | reticulate
https://rstudio.github.io/reticulate/articles/versions.html

Rおじさん、Pythonistaになる | cucumber flesh
https://uribo.hatenablog.com/entry/2017/07/16/100253

.Rprofilereticulate::import("sys")しているのは、
「Rおじさん、Pythonistaになる」の以下の記述のように、
importを行わないと環境が切り替わらないからです。
(最初はこれを書いておらず、上手く切り替わらず悩んでいました)

実際のPython環境の切り替えは、Rのセッション中にimport()が実行されたタイミングで行われます。