gpt4 book ai didi

python - 使用 rpy2 将 R ListVector 转换为 Python 列表

转载 作者:行者123 更新时间:2023-11-28 17:49:15 29 4
gpt4 key购买 nike

我有一个函数,它获取 Python 列表中的项目,将它们放入 R 中的函数,并将它们输出为 R ListVector。问题是我在 documentation 中找不到如何将 ListVector 转换为常规 Python 对象。这是我的代码:

from rpy2.robjects.packages import importr
from rpy2.robjects import r
forecast = importr("forecast")
parallel = importr("multicore")

data = [[1, 2, 3], [4, 5, 6,], [7, 8, 9]]

tuples = tuple(tuple(x) for x in data)

data_list = []
for i in range(0, len(data)):
result1 = "k = as.numeric((list%r))" % (tuples[i],)
data_list.append(result1)

def forecaster(item):
rcode = item
r(rcode)
rcode1 = 'j <- ts(k)'
r(rcode1)
rcode2 = 'p <- parallel(forecast(k, 5, level = c(80,95)))'
r(rcode2)
rcode3 = 'collect(list(p))'
return r(rcode3)


z = [forecaster(x) for x in data_list]

运行 z 得到这样的输出:

[<ListVector - Python:0x4e5f908 / R:0x4a0fcd8>
[ListVector]
<ListVector - Python:0x4e5f908 / R:0x4a0fcd8>
[ListVector], <ListVector - Python:0x4e5fcf8 / R:0x49f9c48>

...等等。有人可以帮我弄清楚如何将这些 ListVectors 转换成我可以在 Python 中实际使用的东西吗?谢谢。

最佳答案

我用 rpy2 做了一个类似的例子如下:

    x = [1,2,3,4,1,2,3,4,1,2]
v = robjects.FloatVector(x)
t = robjects.r['ts'](v)
fit = robjects.r['auto.arima'](t)
next = robjects.r['forecast'](fit,h=1)

很明显我是在做一个简单的使用arima分析时间序列的例子。当我得到下一个时,我发现它是一个ListVector。然后我使用如下代码来获得我想要的值。

    count = len(next) - 2
#ListVector->FloatVector->Float
print next.rx('mean')[0][0]

谁知道这个方法对你是否有效,试试吧

关于python - 使用 rpy2 将 R ListVector 转换为 Python 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13326353/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com