python - 有没有办法阻止 rpy2 自动转换所有内容?
问题描述
我正在使用 rpy2 以便能够在 Python 中使用包FMradio。这个包包含一个用于探索性因素分析的特定管道,所以我使用一个函数的输出作为下一个函数的输入。然而,这个包在很大程度上依赖于矩阵上的列名来进行计算。numpy2ri 和 pandas2ri 的自动转换会删除矩阵的列名和行名,因此无法使用此包。
我认为绕过这个问题的最简单方法是不将 R 矩阵转换为 python 数组,而只使用 R 对象,直到我不再需要它为止。有什么方法可以阻止自动转换的发生并仅在 python 上处理 R 对象?
这就是我尝试使用它的方式。X_filt是一个空向量,因为从 R 矩阵到 numpy.array 的转换会从相关性中删除列名。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)
非常感谢!
解决方案
调用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
推荐阅读
- python - 使用下一个路由和 node.js 服务器从 React 调用 Python 脚本
- puppeteer - 如果时间过长或连接超时问题,如何跳过按 URL 导航
- django - How do you link 2 apps within django?
- javascript - 在 Promise 之后收到除 catch 块之外的警告
- windows - 如何在命令行中使用记事本++ 打开文件。(启动记事本++ 创建新文件而不是打开当前文件)(Windows)
- vue.js - 如何解决服务器中的 ERROR [BABEL] 最大大小 500KB 问题?
- elasticsearch - 如何在 logstash 过滤器中添加文件中的字段
- c - 在 pos 上注入密钥的安全方法
- java - Spring Boot Java 后端编码的硬编码通用?
- unity3d - 向统一着色器添加透明度处理(alpha 集响应)