python - 为 rpy2 转换 python 对象

标签 python r rpy2

以下代码应该在 rpy2 中创建热图

import numpy as np
from rpy2.robjects import r
data = np.random.random((10,10))
r.heatmap(data)    

但是,它会导致以下错误

Traceback (most recent call last):
  File "z.py", line 8, in <module>
    labRow=rowNames, labCol=colNames)
  File "C:\Python25\lib\site-packages\rpy2\robjects\__init__.py", line 418, in __call__
    new_args = [conversion.py2ri(a) for a in args]
  File "C:\Python25\lib\site-packages\rpy2\robjects\__init__.py", line 93, in default_py2ri
    raise(ValueError("Nothing can be done for the type %s at the moment." %(type(o))))
ValueError: Nothing can be done for the type <type 'numpy.ndarray'> at the moment.

从文档中我了解到 r.heatmap 需要“数字矩阵”。如何将 np.array 转换为所需的数据类型?

最佳答案

你需要添加

import rpy2.robjects.numpy2ri
rpy2.robjects.numpy2ri.activate()

在 rpy2 文档中查看更多信息 numpy section (here 对于旧的 2.x 版本)

在 2.2.x 之前,仅导入就足够了。

That import alone is sufficient to switch an automatic conversion of numpy objects into rpy2 objects.

Why make this an optional import, while it could have been included in the function py2ri() (as done in the original patch submitted for that function) ?

Although both are valid and reasonable options, the design decision was taken in order to decouple rpy2 from numpy the most, and do not assume that having numpy installed automatically meant that a programmer wanted to use it.

关于python - 为 rpy2 转换 python 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2447454/

相关文章:

python - FlaskApp 没有属性 'config'

python - 抑制 rpy2 中的警告

rpy2 如何调用 as.matrix()

python - 明显的 rpy2 用法会引发不支持的操作数类型异常

Python multiprocessing.Queue 与 multiprocessing.manager().Queue()

python - WTForms 验证绑定(bind)到模型验证

python - 将 200 个大小为 (100*100) 的 2-d numpy 数组堆叠在 3-d numpy 数组 (200 * 100 * 100) 中

r - Blogdown 中的 YAML 当前日期

regex - 使用 list.files 只列出文件而不列出目录

java - Windows 10 上的 R,rcmdr 'hasjava' 错误