有什么方法可以阻止rpy2自动转换所有内容?

问题描述

我正在使用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)

非常感谢!

解决方法

调用activate()实际上是在要求rpy2转换所有内容。

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

如果仅需要从pandas func StartRecording() -> String{ // Configure the audio session for the app. let audioSession = AVAudioSession.sharedInstance() try! audioSession.setCategory(.record,mode: .measurement,options: .duckOthers) try! audioSession.setActive(true,options: .notifyOthersOnDeactivation) let inputNode = audioEngine.inputNode // let recordingFormat = inputNode.outputFormat(forBus: 0) inputNode.installTap(onBus: 0,bufferSize: 1024,format: recordingFormat) { (buffer: AVAudioPCMBuffer,when: AVAudioTime) in self.recognitionRequest?.append(buffer) } audioEngine.prepare() try! audioEngine.start() // Create and configure the speech recognition request. recognitionRequest = SFSpeechAudioBufferRecognitionRequest() guard let recognitionRequest = recognitionRequest else { fatalError("Unable to create a SFSpeechAudioBufferRecognitionRequest object") } recognitionRequest.shouldReportPartialResults = true // Create a recognition task for the speech recognition session. // Keep a reference to the task so that it can be canceled. recognitionTask = speechRecognizer.recognitionTask(with: recognitionRequest) { result,error in var isFinal = false if let result = result { // Update the text view with the results. self.recognizedText = result.bestTranscription.formattedString isFinal = result.isFinal } if error != nil || isFinal { // Stop recognizing speech if there is a problem. self.audioEngine.stop() inputNode.removeTap(onBus: 0) self.recognitionRequest = nil self.recognitionTask = nil } } return recognizedText } 的转换,则文档中的相关部分可能就足够了: https://rpy2.github.io/doc/v3.3.x/html/pandas.html

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...