RPy2的奇怪问题

jra*_*ara 2 python r python-idle

从中安装RPy2后

http://rpy.sourceforge.net/rpy2.html

我正在尝试在Python 2.6 IDLE中使用它,但我收到此错误:

>>> import rpy2.robjects as robjects
>>> robjects.r['pi']

<RVector - Python:0x0121D8F0 / R:0x022A1760>
Run Code Online (Sandbox Code Playgroud)

我做错了什么?

Sha*_*ane 8

您是否尝试过查看返回的向量?

 >>> pi = robjects.r['pi']
 >>> pi[0]
 3.14159265358979
Run Code Online (Sandbox Code Playgroud)


Mar*_*ark 5

扩展Shane的答案.rpy2使用以下Python对象来表示基本的R类型:

  • RVector:R标量和向量,R列表表示为具有名称的RVectors,见下文
  • RArray:一个R矩阵,基本上是具有维度的RVector
  • RDataFrame:R data.frame

要强制回到基本的Python类型,请看这里.

举个例子,我使用它将R List转换为python dict:

rList = ro.r('''list(name1=1,name2=c(1,2,3))''')
pyDict = {}
for name,value in zip([i for i in rList.getnames()],[i for i in rList]):
    if len(value) == 1: pyDict[name] = value[0]
    else: pyDict[name] = [i for i in value]
Run Code Online (Sandbox Code Playgroud)