Rpy2:如何访问R中的列表类型变量?

8

我可以使用rpy2在Jupyter/Python中拟合模型,但是返回的结果是R中的列表类型值。例如:

# Cell #1, load rpy2 and re
%load_ext rpy2.ipython
%R require(ggplot2)
%R require(movMF)

# Cell #2, generate data from Python
from scipy.stats import vonmises
kappa = 5
samples = vonmises.rvs(kappa, size=100)
data = [cos(samples), sin(samples)]

# Cell #3, fit model using R and rpy2
%%R -i data -o result
result = movMF(data, 1, nruns = 10)

# Cell #4, print result
print(result)

结果看起来像这样:

enter image description here

如果我输入result,它将返回。
R object with classes: ('movMF',) mapped to:
<ListVector - Python:0x00000000103B4448 / R:0x0000000010CB2380>
[Matrix, Float..., Float..., ..., IntVe..., Float..., ListV...]
  theta: <class 'rpy2.robjects.vectors.Matrix'>
  R object with classes: ('matrix',) mapped to:
<Matrix - Python:0x0000000004FCF388 / R:0x0000000010C5B2B8>
[5.235426, -0.023640]
  alpha: <class 'rpy2.robjects.vectors.FloatVector'>
  R object with classes: ('numeric',) mapped to:
<FloatVector - Python:0x00000000103B4588 / R:0x0000000011F6B6B0>
[1.000000]
  L: <class 'rpy2.robjects.vectors.FloatVector'>
  R object with classes: ('numeric',) mapped to:
<FloatVector - Python:0x00000000103B4BC8 / R:0x00000000114FB6F0>
[118.877731]
  ...
  theta: <class 'rpy2.robjects.vectors.IntVector'>
  R object with classes: ('integer',) mapped to:
<IntVector - Python:0x0000000011441248 / R:0x0000000011F6B980>
[       1]
  alpha: <class 'rpy2.robjects.vectors.FloatVector'>
  R object with classes: ('logLik',) mapped to:
<FloatVector - Python:0x00000000114415C8 / R:0x000000000EE447E0>
[118.877731]
R object with classes: ('movMF',) mapped to:
<ListVector - Python:0x00000000103B4448 / R:0x0000000010CB2380>
[Matrix, Float..., Float..., ..., IntVe..., Float..., ListV...]

我想知道如何访问它的内部值?
到目前为止,我只能操作result[0],不确定这是否是正确的方法。
在 R 环境中,这是数据结构:

enter image description here

而且我可以像这样访问该值 result$theta

2个回答

7
print(pamk_clusters$pamobject$clusinfo)

不会工作,它的等价物

print(pamk_clusters[["pamobject"]][["clusinfo"]])

但是也不起作用...然而,在"man"中进行了一些挖掘之后

https://rpy2.github.io/doc/latest/html/vector.html#extracting-r-style

通过两个代理程序rx和rx2授予访问R样式的提取/子集操作,分别表示R函数[和[[。

这个工作正常。

print(pamk_clusters.rx2("pamobject").rx2("clusinfo"))

我在论坛上评论了“man”的清晰度:

https://bitbucket.org/rpy2/rpy2/issues/436/acessing-dataframe-elements-using-rpy2


2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接