2012-04-11 62 views
0

我剛開始使用Python resp。 Rpy2,所以我真的是一個初學者。 到目前爲止,我設法通過Rpy2 加載我自己的R包,並生成我輸入變量的結果(與R的lm()函數可比較的 )。 我的結果是以下幾點:在rpy2中對數組進行索引

>>> res 
<ListVector - Python:0x1561828/R:0xe6a5c8> 
[Matrix, Array] 
    coef.f: <class 'rpy2.robjects.vectors.Matrix'> 
    [-10.554713, 1.640681, 0.957045, ..., 0.000000, 0.000000, 0.783108] 
    pred.f: <class 'rpy2.robjects.vectors.Array'> 
    [17.189366, 7.116058, 41.526062, ..., 459.952946, 312.088634, 677.908581] 

我也能夠通過使用索引1得到陣列分部(pred.f):

>>>res1 = res[1] 
>>> res1 
<Array - Python:0x1561850/R:0x4b299d0> 
[17.189366, 7.116058, 41.526062, ..., 459.952946, 312.088634, 677.908581] 
>>> print res1 
, , L=300, AR=1.5, SO=1, T=30 

    sigma_stat sigma_mob 
fit 17.189366 152.21461 
lwr 7.116058 76.98245 
upr 41.526062 301.01379 

, , L=300, AR=1.5, SO=2, T=30 

    sigma_stat sigma_mob 
fit 27.62310 284.5423 
lwr 14.54639 173.3316 
upr 52.45825 467.1449 

, , L=300, AR=1.5, SO=3, T=30 

    sigma_stat sigma_mob 
fit 39.75894 459.9529 
lwr 24.07098 312.0886 
upr 65.67369 677.9086 

現在,我想用一個智能的方式訪問此數組中的某些數字。例如,我希望sigma_stat,fit,L = 300,AR = 1.5,SO = 3,T = 30的數字...這意味着我的數組是6維的。

有沒有簡單的方法來做到這一點?類似於使用維度名稱/數字進行索引的索引:res1('sigma_stat','fit','L'= 300,'AR'= 1.5,'SO'= 3,'T'= 30)

謝謝爲你的幫助...

回答

0

會這樣的工作?

res1.rx('sigma_stat', 'fit', 'L=300', 'AR=1.5', 'SO=3', 'T=30') 

(注意維度名稱必須以正確的順序 - 我不知道的時間來檢驗,可能是「sigma_stat」和「適合」應該去的參數列表的末尾)