簡體   English   中英

如何使用rpy2從python獲取n維數組

[英]how to use rpy2 to get n-dim array from python

我想使用python進行一些計算,然后將數組數據放入r以得到一些圖。

對於1維數組,我可以使用FloatVector來獲得正確答案,但n維數組錯誤

(運行以下代碼)

(2維數組)
import numpy as np from rpy2.robjects.vectors import FloatVector x = np.array([[1, 2], [3, 4]]) X = FloatVector(x)

錯誤信息:

`Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
 File "D:\Program\Anaconda3\lib\site-packages\rpy2\robjects\vectors.py",   line 456, in __init__
 obj = FloatSexpVector(obj)
 ValueError: Error while trying to convert element 0 to a double.`

使用numpy2ri可能會使某些繪圖順序出錯(例如ggplot2)

我想在間諜中做所有這些。

轉換機制可以是您的朋友:

from rpy2.robjects.conversion import localconverter
from rpy2.robjects import numpy2ri

with localconverter(numpy2ri.converter) as cv:
    X = cv.py2ro(x) # convert from *py*thon to *ro*bjects

否則,發生這種情況是因為rpy2試圖遍歷序列x (默認行為而不請求numpy進行交互),並使迭代中的每個元素成為R / rpy2對象。 這不起作用,因為x[i]被關到FloatVector ,你不能有一個FloatVectorFloatVector元素(你可以有FloatVector名單雖然)。 明確地說,這就是正在發生的情況(您將觸發相同的錯誤):

FloatVector([FloatVector(y) for y in x])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM