【问题标题】:Is there any way to stop rpy2 from converting everything automatically?有没有办法阻止 rpy2 自动转换所有内容?
【发布时间】:2020-08-19 14:18:08
【问题描述】:

我使用 rpy2 是为了能够在 Python 中使用包 FMradio。这个包包含一个用于探索性因素分析的特定管道,所以我使用函数的输出作为下一个函数的输入。然而,这个包在很大程度上依赖于矩阵上的列名来进行计算。 numpy2ri 和 pandas2ri 的自动转换会删除矩阵的列名和行名,因此无法使用此包。

我认为绕过这个问题的最简单方法是不将 R 矩阵转换为 python 数组,而只使用 R 对象,直到我不再需要它为止。有什么办法可以阻止自动转换的发生,只在 python 上处理 R 对象?

这就是我尝试使用它的方式。 X_filt 是一个空向量,因为从 R 矩阵到 numpy.array 的转换会删除 correlation 中的列名。 X 必须是函数 subSet 才能工作的矩阵,因此不能将其转换为 pandas 数据框。

import rpy2.robjects as ro
from rpy2.robjects import pandas2ri
pandas2ri.activate()

from rpy2.robjects.packages import importr
FMradio = importr("FMradio")
stats = importr("stats")


correlation = stats.cor(X, method = "pearson", use = "pairwise.complete.obs")
correlation_filt = FMradio.RF(correlation, t = 0.9)
X_filt = FMradio.subSet(X, correlation_filt)
regular_correlation = FMradio.regcor(X_filt, 10, verbose = FALSE)

非常感谢!

【问题讨论】:

    标签: python r pandas rpy2 factor-analysis


    【解决方案1】:

    调用activate()实际上是要求rpy2转换一切。

    有关转换的文档概述了转换的工作原理: https://rpy2.github.io/doc/v3.3.x/html/robjects_convert.html#conversion

    如果从和到 pandas 的转换是您唯一需要的,那么文档中的相关部分可能就足够了: https://rpy2.github.io/doc/v3.3.x/html/pandas.html

    【讨论】:

      猜你喜欢
      • 2013-04-10
      • 1970-01-01
      • 1970-01-01
      • 2014-06-16
      • 2013-06-23
      • 2011-12-02
      • 2021-04-11
      • 1970-01-01
      • 2021-01-18
      相关资源
      最近更新 更多