2017-09-13 15 views
0

pandasを使用して.csvファイルを読み込んだ後、rpy2パッケージを使用してRデータフレームに変換した後、いくつかのR関数を使ってモデルを作成しました(rpy2経由でも)。私はそれを.csvファイルとして保存するか、他の目的のために使用することができるように、それをPandasデータフレームに変換します。このワークフローは、表向き正しいrpy2行列オブジェクトをPandasデータフレームに変換する方法は?

import pandas as pd 
from rpy2.robjects import r 
import sys 
import rpy2.robjects.packages as rpackages 
from rpy2.robjects.vectors import StrVector 
from rpy2.robjects import r, pandas2ri 

pandas2ri.activate() 
caret = rpackages.importr('caret') 
broom= rpackages.importr('broom') 

my_data= pd.read_csv("my_data.csv") 
r_dataframe= pandas2ri.py2ri(my_data) 

preprocessing= ["center", "scale"] 
center_scale= StrVector(preprocessing) 

#these are the columns in my data frame that will consist of my predictors in the model 
predictors= ['predictor1','predictor2','predictor3'] 
predictors_vector= StrVector(predictors) 

#this column from the dataframe consists of the outcome of the model 
outcome= ['fluorescence'] 
outcome_vector= StrVector(outcome) 

#this line extracts the columns of the predictors from the dataframe 
columns_predictors= r_dataframe.rx(True, columns_vector) 

#this line extracts the column of the outcome from the dataframe 
column_response= r_dataframe.rx(True, column_response) 

cvCtrl = caret.trainControl(method = "repeatedcv", number= 20, repeats = 100) 

model_R= caret.train(columns_predictors, columns_response, method = "glmStepAIC", preProc = center_scale, trControl = cvCtrl) 

summary_model= base.summary(model_R) 

coefficients= stats.coef(summary_model) 

pd_dataframe = pandas2ri.ri2py(coefficients) 

pd_dataframe.to_csv("coefficents.csv") 

ものの、出力.csvファイルには、私のニーズを満たしていませんでした:それを理解するために:

私はパンダのサイトの指示(https://pandas.pydata.org/pandas-docs/stable/r_interface.htmlソースを)出て続いています列と行の名前が削除されたためです。 type(pd_dataframe)というコマンドを実行したとき、私はそれが<type 'numpy.ndarray'>であることがわかりました。テーブルの情報は引き続き存在しますが、新しい書式設定では列と行の名前が削除されています。

私はコマンドtype(coefficients)を実行して、それが<class 'rpy2.robjects.vectors.Matrix'>であることを発見しました。このMatrixオブジェクトはまだ列と行の名前を保持していたので、RオブジェクトのDataFrameに変換しようとしましたが、私の努力は無駄であることが分かりました。さらに、pd_dataframe = pandas2ri.ri2py(coefficients)という行がなぜpandas DataFrameオブジェクトを生成しなかったのか、またなぜ私の列と行の名前が保持されなかったのか分かりません。

誰かが私の列と行の名前を保持する何らかの種類のパンダDataFrameを得ることができる方法をお勧めしますか?

UPDATE

新しい方法がpandas2ri.ri2py_dataframe(ソース:​​)と呼ばれるパッケージの少し古いバージョンの文書で言及された、そして今、私が代わりにnumpyの配列の適切なデータフレームを持っています。しかし、私はまだ行と列の名前を正しく転送することができません。助言がありますか?

+0

現在のリリースのドキュメントは、https://rpy2.github.io/doc/v2.9.x/html/indexです。 .html – lgautier

+0

@lgautier 2.9.xをダウンロードして使用しようとしたとき、私のPython 2.7のスクリプトは互換性がなく、Python 3でしか動作しないため、バージョン2.8.xを使用しています。バツ。 –

答えて

関連する問題