R 與 Python 整合

環境準備

程式碼

# -*- coding: utf-8 -*- import pyRserve import numpy as np # 連接 Rserve 服務程序, 並指定所有 R 傳回值為 NumPy 陣列 rConn = pyRserve.connect(host='localhost', port=6311, atomicArray=True) # 測試連線是否開啟 if not rConn.isClosed: # 載入 R 程式館 rConn.voidEval("library(psych)") # 產生 NumPy 樣本陣列,並傳入 R 變數 rConn.r.myArr = 10 * np.random.random_sample((10,)) # 檢查 R 變數是否傳入 myArr = rConn.eval("myArr") for i in myArr: print "%.2f\t" % (i), print # 調用 R 內嵌函數, 作用於 R 已傳入陣列 sum_a = rConn.r.sum(rConn.ref.myArr) mean_a = rConn.r.mean(rConn.ref.myArr) sd_a = rConn.r.sd(rConn.ref.myArr) print "Sum=%.2f\tMean=%.2f\tStdVar=%.2f" % (sum_a[0], mean_a[0], sd_a[0]) # 調用 R 程式館函數 summary_a = rConn.r.describe(rConn.ref.myArr) print "Median=%.2f\tMean=%.2f\tStdVar=%.2f\tSkew=%.2f\tKurtosis=%.2f" % \ (summary_a[4], summary_a[2], summary_a[3], summary_a[11], summary_a[12]) # 關閉 Rserve 連線 rConn.close()