RのrSymPyは使いにくいので

  • シンボリック計算はRではやりにく
  • pythonにはSymPyパッケージがあってかなり楽
  • RにはこのpithonのSymPyをjava経由で使うというパッケージrSymPyというものがあるのだが、java SDKの設定など難関・陥穽が厳しく、断念…。WindowsMacも断念
  • じゃあ、ということで、Rでやりたいことをやって、SymPyでやりたいところだけ、pythonでやる作戦はどうか、ということになり、やってみる
  • pythonを立ち上げ、python側からRをバックグラウンド実行して、オブジェクトを取ってこれたら成功、という定義で試してみる
  • 参考サイトはこちら
  • まず、Rでやりたいことは、"pypertest.R"ファイルに書くことにする
X <- sample(1:10,3)
pip install pyper
  • pythonを起動し(anacondaとかを使って、一通りが入っているのが良い。pandaパッケージは使う)(実際にはJupyter notebookでpython3カーネルのipynbを作り)、以下の手順でやれば、Rで作成した乱数が表示できる
  • めでたしめでたし
import pyper
import pandas as pd
r = pyper.R(use_pandas='True')
r("source(file='pypertest.R')")
X = pd.Series(r.get("X"))
print(X)
  • うまくいったので、いざ、SymPyへ
  • やりたいことは、SymPyで作りたい式の係数の値をRで作り、それをpython側に持ってきて、SymPyの変数に代入した式を作ること
  • まず、係数を作るRコードをファイル保存。本当は、とても長いプロセスの末に出てくるが、ここでは、ちょろっと作る

  • 次にpython側でやるのは以下のようなこと