如何将numpy数组转换为R矩阵?

fil*_*ter 7 python r rpy2

如何使用rpy2将numpy数组转换为R矩阵?这可能是微不足道的,但我在文档中找不到一个好的答案.我可以通过首先转换为pandas数据帧作为额外步骤来实现这一点,但这似乎是多余的.

工作范例:

import numpy as np
from pandas import *
import pandas.rpy.common as com
import rpy2.robjects as ro

B=np.array([[1,2,3],[4,5,6],[7,8,9]])

Rmatrix = com.convert_to_r_matrix(B)  # Does not work

#Extra conversion via pandas dataframe
PandasDF = DataFrame(B)
Rmatrix = com.convert_to_r_matrix(PandasDF)
ro.r.assign("Bmatrix", Rmatrix)
print(ro.r["Bmatrix"])
Run Code Online (Sandbox Code Playgroud)

fil*_*ter 6

这是有效的,基于 post Converting python objects for rpy2和关于numpy to rpy2 转换的 rpy2 文档:

import rpy2.robjects as ro
import rpy2.robjects.numpy2ri
rpy2.robjects.numpy2ri.activate()

nr,nc = B.shape
Br = ro.r.matrix(B, nrow=nr, ncol=nc)

ro.r.assign("B", Br)
Run Code Online (Sandbox Code Playgroud)