2017-09-18 12 views
1

私がようにPythonでRオブジェクトのclass属性にアクセスする方法は?

簡単にするため、あなたのJupyterノートブックのラインの最初のカップルは

import pandas as pd, numpy as np 

# Call function from R 
import os 
os.environ['R_USER'] = 'D:\Anaconda3\Lib\site-packages\rpy2' 
import rpy2.robjects as robjects 
from rpy2.robjects import pandas2ri 
pandas2ri.activate() 

from rpy2.robjects.packages import importr 
utils = importr('utils') 
ggplot2 = importr("ggplot2", lib_loc = "C:/.../R/win-library/3.3") 

# Import vars 
Rvars = importr("vars", lib_loc = "C:/.../R/win-library/3.3") 

としてあるべきjupyterノートにVARSパッケージを使用していますが、私はデータフレームを持っているが

df = pd.DataFrame(np.random.random((108, 2)), columns=['Number1','Number2']) 
df.head() 
を言います

私は

Model2=Rvars.VAR(df,p=3, type='const') 
type(Model2) 

とRECをコード化タプル

tuple(Model2.slots) 

で符号化する場合、私は

print(Model2.names) 

を生成するようにこのように名前を印刷

('names', 'class') 

を受け以下

rpy2.robjects.vectors.ListVector 

をieved

[1] "varresult" "datamat"  "y"   "type"   "p"   

[6] "K"   "obs"   "totobs"  "restrictions" "call" 

私の質問

方法は、45ページの

https://cran.r-project.org/web/packages/vars/vars.pdf

で説明するように、すべての上記の値は、Rのクラス属性 'varest' がリストの唯一の要素であり、私はvarresultからPythonにアクセスできますか?

答えて

0

私はそれを理解したと思います。私は生変数のデータ行列を表す変数yを得るための些細なケースを考え、説明の目的のために

http://rpy.sourceforge.net/rpy2/doc-2.1/html/introduction.html

から良い支援を受けました。

http://rpy.sourceforge.net/rpy2/doc-2.2/html/changes.html

で説明したように異なる、同様の質問は、私の問題提起

に基づいて

extract coefficients from R lme model in rpy2

に答えていたが

.rx.rx2はrpy2の新機能です

私たちはva rible yこれは内生変数のデータ行列を表します。

この

A=Model2.rx2('y') 
y=pd.DataFrame(np.array(A),columns=A.names[1]) 
y.head() 

あなたは要素varresultを抽出するために、y.head()df.head()

しかし、元のデータフレームと同じであることがわかりますようpythonの属性rx2によって達成することができるもう少しです複雑

と同様の議論に従いました例えば
A=Model2.rx2('varresult') 
print(A.names) 

Output: [1] "Number1" "Number2" 

その後

B=A.rx2('Number1') 
print(B.names) 

Output: 
[1] "coefficients" "residuals"  "effects"  "rank"   

[5] "fitted.values" "assign"  "qr"   "df.residual" 

[9] "xlevels"  "call"   "terms"   "model" 

、1はあなたが参照している以下の

resid1=np.array(B.rx2('residuals')) 
+0

ドキュメントページを使用して最初の方程式から回帰の残差を取得することはかなり古いです。最新のドキュメントについてはhttps://rpy2.bitbucket.ioのリンクを確認してください。 – lgautier

+0

@Igautierコメントありがとうございました。しかし、私はWindows 10を使用しています。何らかの理由で、私はrpy2 v 2.9にアクセスできません。https://stackoverflow.com/questions/11165123/install-rpy2-on-windows7-64bit-for-python- 2-7 したがって、私は与えた書類にしかアクセスできない – rsc05

関連する問題