2

rpy2Rを介して python 内からpackage( ks)を簡単に呼び出そうとしています。これが私が達成したいことです:

import rpy2.robjects as robjects

# Define two matrices.
matrix1 = [[1,1,1,1], [3,3,3,3]]
matrix2 = [[1,1,1,1], [3,3,3,3]]

# Call 'ks' function to obtain p_value.
p_val = robjects.r('''
library(ks)
kde.test(x1=matrix1, x2=matrix2)$pvalue''')

print p_val

rpy2のドキュメントに従ってみましたが、非常に不足しています。どんな助けでも大歓迎です。

4

2 に答える 2

4

lgautierによって与えられたものに基づいて自分の答えを投稿すると、その答えはそのままでは機能しませんでした。nrowまた、修正する代わりに渡すことで、もう少し一般的なものにしました。

import rpy2.robjects as robjects
from rpy2.robjects.packages import importr
ks = importr('ks')

kde_test = ks.kde_test

matr1 = [1., 3., 1., 3., 0.2, 1.5, 0.5, 1.3]
matr2 = [1., 3., 1., 3., 0.2, 1.5, 0.5, 1.3, 0.5, 4.6]  

m1 = robjects.r.matrix(robjects.FloatVector(matr1), nrow=int(len(matr1)/2), byrow=True)
m2 = robjects.r.matrix(robjects.FloatVector(matr2), nrow=int(len(matr2)/2), byrow=True)

res = kde_test(x1 = m1, x2 = m2)

pval = res.rx2('pvalue')

print float(str(pval)[4:])

最初はうまくいかなかったとしても、解決策を提案してくれた lgautier のおかげです。

于 2013-11-02T16:41:18.400 に答える