私は、理想的には結果を表示して保存するために、PythonからRスクリプトを実行しようとしています。rpy2 を使用するのは少し苦労したので、R を直接呼び出すだけでよいと考えました。「os.system」や「subprocess.call」などを使用する必要があるような気がしますが、モジュール ガイドを解読するのに苦労しています。
これは R スクリプト "MantelScript" で、特定の統計テストを使用して一度に 2 つの距離行列 (distmatA1 と distmatB1) を比較します。これはRで機能しますが、一連のファイルをペアごとに読み込んで比較するための反復ビットをまだ入れていません(ところで、これについても支援が本当に必要です! ):
library(ade4)
M1<-read.table("C:\\pythonscripts\\distmatA1.csv", header = FALSE, sep = ",")
M2<-read.table("C:\\pythonscripts\\distmatB1.csv", header = FALSE, sep = ",")
mantel.rtest(dist(matrix(M1, 14, 14)), dist(matrix(M2, 14, 14)), nrepet = 999)
これは、以前に定式化されたいくつかのリストを読み取り、この Mantel Test を介してそれらを比較するために行列を引き出す、私の python スクリプトの関連部分です (identityA から最初の行列を取り出し、identityB のすべての行列と順次比較し、繰り返します)。 identityB からの 2 番目の行列など)。これらのファイルを保存してから、R プログラムを呼び出してそれらを比較したいと考えています。
# windownA and windownB are lists containing ascending sequences of integers
# identityA and identityB are lists where each field is a distance matrix.
z = 0
v = 0
import subprocess
import os
for i in windownA:
M1 = identityA[i]
z += 1
filename = "C:/pythonscripts/distmatA"+str(z)+".csv"
file = csv.writer(open(filename, 'w'))
file.writerow(M1)
for j in windownB:
M2 = identityB[j]
v += 1
filename2 = "C:/pythonscripts/distmatB"+str(v)+".csv"
file = csv.writer(open(filename2, 'w'))
file.writerow(M2)
## result = os.system('R CMD BATCH C:/R/library/MantelScript.R') - maybe something like this??
## result = subprocess.call(['C:/R/library/MantelScript.txt']) - or maybe this??
print result
print ' '