RStudioでR Markdownのchunk実行時に呼び出すPythonの指定方法
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
.Rprofile
でreticulate::import("sys")
しているのは、
「Rおじさん、Pythonistaになる」の以下の記述のように、
importを行わないと環境が切り替わらないからです。
(最初はこれを書いておらず、上手く切り替わらず悩んでいました)
実際のPython環境の切り替えは、Rのセッション中にimport()が実行されたタイミングで行われます。