rpy2如何调用as.matrix()

时间:2018-11-21 18:54:13

标签: rpy2

我正在使用rpy2从python调用一些R函数。 R函数返回dist对象。如何从python调用R代码返回的结果中的as.matrix()

import rpy2.robjects.numpy2ri
from rpy2.robjects.packages import importr
rpy2.robjects.numpy2ri.activate()
Rsession = rpy2.robjects.r
tsclust = importr('TSclust')

X= np.random.random((5,5))
result = Rsession.diss( X , "ACF", p=0.05)

result是dist类的。我想要一个平方距离矩阵,可以通过对结果调用as.matrix()来实现。我该如何使用rpy2?

2 个答案:

答案 0 :(得分:1)

可以这样做:

from rpy2.robjects.packages import importr

base = importr('base')
base.as_matrix(result)

答案 1 :(得分:0)

我想出了一个解决方案。它不是很漂亮,但是可以。我们定义了一个自定义函数,该函数调用as.matrix

from rpy2.robjects.packages import STAP
mfunc = 'myasmatrix <- function(dobj){return(as.matrix(dobj))}'
myasmatrix = STAP(mfunc, "myasmatrix")

np.array(myasmatrix.myasmatrix(rres))
>>> array([[0.        , 0.0663193 , 0.01159857, 0.14378692, 0.10069314],
   [0.0663193 , 0.        , 0.06064907, 0.07965314, 0.03511945],
   [0.01159857, 0.06064907, 0.        , 0.13898505, 0.095319  ],
   [0.14378692, 0.07965314, 0.13898505, 0.        , 0.04757353],
   [0.10069314, 0.03511945, 0.095319  , 0.04757353, 0.        ]])