rpy2按名称访问R命名列表项,低级接口
如何按名称访问命名列表的元素 我有3个函数,它们都返回类rpy2按名称访问R命名列表项,低级接口,rpy2,Rpy2,如何按名称访问命名列表的元素 我有3个函数,它们都返回类htest的ListSexpVector。其中一个有5个元素,['method'、'parameter'、'statistic'、'p.value'、'data.name'],其他元素有不同的编号和顺序。我感兴趣的是从这个列表中提取p.value,统计数据和参数。在R中,我可以使用$,如下所示: p.value <- fit$p.value statistic <- fit$statistic param <- fit$p
htest
的ListSexpVector
。其中一个有5个元素,['method'、'parameter'、'statistic'、'p.value'、'data.name']
,其他元素有不同的编号和顺序。我感兴趣的是从这个列表中提取p.value
,统计数据
和参数
。在R中,我可以使用$
,如下所示:
p.value <- fit$p.value
statistic <- fit$statistic
param <- fit$parameter
这是相当冗长的。有更好(更短、更甜、更像蟒蛇)的方法吗
有一种传统的基于整数的索引:
p_val = fit[3]
stat = fit[2]
param = fit[1]
但是当位置改变时,它不起作用,因此是一个严重的限制,因为我安装了3个不同的函数,每个函数返回不同的顺序。高级接口旨在提供更友好的接口,因为低级接口非常接近R的C-API。有了它,人们可以:
p_val = fit.rx2('p.value')
或
如果使用低级接口,则必须实现自己的便利包装器来重现这些功能。例如:
def dollar(obj, name):
"""R's "$"."""
return obj[fit.do_slot('names').index(name)]
哦,有一个
.rx2
存取器!我不知道这件事。在文件里找不到。非常感谢。这里简单地提到:(尽管目前没有代码示例)
p_val = fit[fit.names.index('p.value')]
def dollar(obj, name):
"""R's "$"."""
return obj[fit.do_slot('names').index(name)]