如何解决有什么方法可以阻止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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。