如何使用 rpy2 从 python 获取 n-dim 数组
how to use rpy2 to get n-dim array from python
我想使用 python 进行一些计算,并将数组数据放入 r 以获得一些绘图。
对于 1-dim 数组,我可以使用 FloatVector 得到正确答案,但 n-dim 数组错误
(运行 以下代码)
(二维数组)
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)中出错
我想在 spyder 中完成这些。
转换机制可以是你的朋友:
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
并且你不能有 FloatVector
的 FloatVector
元素(虽然你可以有一个 FloatVector 列表)。明确地说,这就是正在发生的事情(你会触发同样的错误):
FloatVector([FloatVector(y) for y in x])
我想使用 python 进行一些计算,并将数组数据放入 r 以获得一些绘图。
对于 1-dim 数组,我可以使用 FloatVector 得到正确答案,但 n-dim 数组错误
(运行 以下代码)
(二维数组)
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)中出错
我想在 spyder 中完成这些。
转换机制可以是你的朋友:
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
并且你不能有 FloatVector
的 FloatVector
元素(虽然你可以有一个 FloatVector 列表)。明确地说,这就是正在发生的事情(你会触发同样的错误):
FloatVector([FloatVector(y) for y in x])