2012-04-11 7 views
0

Ich habe gerade angefangen Python zu verwenden. Rpy2 also bin ich wirklich ein Anfänger. Bisher gelang es mir, mein eigenes R-Paket über Rpy2 zu laden und ein Ergebnis für meine Eingabevariablen zu erzeugen (vergleichbar mit der lm() Funktion von R). Mein Ergebnis ist ein folgendes:Indizierung des Arrays in 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] 

ich auch in der Lage bin das Array subpart (pred.f) zu erhalten, indem Index mit 1:

>>>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 

Nun würde Ich mag eine intelligente Art und Weise zu verwenden, um auf bestimmte Zahlen in diesem Array zuzugreifen. Eg. Ich hätte gerne die Nummer für sigma_stat, fit, L = 300, AR = 1,5, SO = 3, T = 30 ... das heißt mein Array ist 6-dimensional.

Gibt es eine einfache Möglichkeit, das zu tun? So etwas wie Indizierung mit den Dimensionsnamen/-zahlen: res1 ('sigma_stat', 'fit', 'L' = 300, 'AR' = 1,5, 'SO' = 3, 'T' = 30)

Vielen Dank für Ihre Hilfe ...

Antwort

0

Würde so etwas funktionieren?

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

(beachten Sie, dass die Dimensionsnamen in der richtigen Reihenfolge muss - ich weiß nicht, dass die Zeit zu testen, kann sein ‚sigma_stat‘ und ‚fit‘ bis zum Ende der Argumentliste gehen soll)