我正在尝试通过rpy2从python内部对R
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
根据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提出的解决方案,即使该解决方案起初没有奏效。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句