【发布时间】: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