RでPythonを実行する方法

私がRを愛しているのと同じくらい、Pythonがデータサイエンスと汎用コンピューティングの両方にとって優れた言語であることは明らかです。そして、RユーザーがPythonでいくつかのことをしたいと思う正当な理由があるかもしれません。多分それは(まだ)Rに相当するものがない素晴らしいライブラリです。または、アクセスしたいAPIで、PythonのサンプルコードはあるがRはない。

R reticulateパッケージのおかげで、Rスクリプト内でPythonコードを直接実行し、PythonとRの間でデータをやり取りできます。

網状化に加えて、Pythonをシステムにインストールする必要があります。また、Pythonコードが依存するPythonモジュール、パッケージ、およびファイルも必要です。

あなたが一緒に従うしたい場合は、インストールしたロード網状 install.packages("reticulate")library(reticulate)

簡単にするために、2行のPythonコードから始めて、基本的な科学計算用のNumPyパッケージをインポートし、4つの数値の配列を作成しましょう。Pythonコードは次のようになります。

numpyをnpとしてインポート

my_python_array = np.array([2,4,6,8])

そして、Rスクリプトでそれを正しく行う1つの方法は次のとおりです。

py_run_string( "import numpy as np")

py_run_string( "my_python_array = np.array([2,4,6,8])")

このpy_run_string()関数は、括弧と引用符で囲まれたPythonコードを実行します。 

そのコードをRで実行すると、何も起こらなかったように見える場合があります。RStudio環境ペインには何も表示されず、値は返されません。print(my_python_array)Rで実行すると、my_python_array存在しないエラーが発生します。

しかし、あなたが実行した場合 、Pythonの 内部でprintコマンドをpy_run_string()機能など、 

py_run_string( "my_python_arrayのアイテムの場合:print(item)")

結果が表示されるはずです。 

ただし、コードが2行以上ある場合は、このようにPythonコードを1行ずつ実行するのが面倒になります。したがって、RでPythonを実行して網状にする方法は他にもいくつかあります。

1つは、すべてのPythonコードを通常の.pyファイルに入れて、py_run_file()関数を使用することです。私が好きなもう1つの方法は、RMarkdownドキュメントを使用することです。 

R Markdownを使用すると、テキスト、コード、コード結果、および視覚化を1つのドキュメントに組み合わせることができます。[ファイル]> [新しいファイル]> [Rマークダウン]を選択して、RStudioで新しいRマークダウンドキュメントを作成できます。

コードチャンクは3つのバッククォート(```)で始まり、3つのバッククォートで終わり、RStudioではデフォルトで背景が灰色になります。

この最初のチャンクはRコード用ですr。これは、開き角かっこの後で確認できます。網状パッケージをロードしてから、使用するPythonのバージョンを指定します。(指定しない場合は、システムのデフォルトが使用されます。)

```{r setup, include=FALSE, echo=TRUE}

library(reticulate)

use_python("/usr/bin/python")

```

以下のこの2番目のチャンクは、Pythonコード用です。Pythonファイルと同じようにPythonを入力できます。以下のコードは、NumPyをインポートし、配列を作成して、配列を出力します。

`` `{python}

numpyをnpとしてインポート

my_python_array = np.array([2,4,6,8])

my_python_arrayのアイテムの場合:

print(item)

`` `

クールな部分は次のとおりです。Rでその配列をpy$my_python_array(一般にpy$objectname)と呼ぶことで使用できます。

この次のコードチャンクでは、そのPython配列をと呼ばれるR変数に格納しますmy_r_array。次に、その配列のクラスを確認します。

`` `{r}

my_r_array <-py $ my_python_array

class(my_r_array)

これはクラス「配列」であり、このようなRオブジェクトに期待するものとはまったく異なります。しかし、それを通常のベクトルに変換as.vector(my_r_array)して、各項目に2を掛けるなど、必要なR演算を実行できます。 

`` `{r}

my_r_vector <-as.vector(py $ my_python_array)

class(my_r_vector)

my_r_vector <-m​​y_r_vector * 2

`` `

次のクールな部分:PythonでそのR変数をr.my_r_array(より一般的にはr.variablename) 次のように使用できます

`` `{python}

my_python_array2 = r.my_r_vector

print(my_python_array2)

`` `

システムにPythonを設定せずにこれがどのように見えるかを確認したい場合は、このストーリーの上部にあるビデオを確認してください。