2016-06-07 8 views
1

Mit rpy2, in Python 3.5, kann ich eine R-Matrix definieren:Matrix Zuordnung in rpy2

import rpy2.robjects as robjects 
m = robjects.r.matrix(robjects.IntVector(range(10)), nrow=2, ncol = 5) 
print(m) 

    [,1] [,2] [,3] [,4] [,5] 
[1,] 0 2 4 6 8 
[2,] 1 3 5 7 9 

I kann dann extract an element by row, column, R-style:

print(m.rx(1, 2)) 

[1] 2 

und ich kann einen Wert mit einem beliebigen Elemente zuweisen , Python-style:

m[4] = 100 
print(m.rx(1, 3)) 

[1] 100 

ich kann jedoch nicht, wie ein Element für Zeile, Spalte zuzuweisen. Ich versuchte, die folgenden:

m.rx(1, 3) = 200 
    m.rx(1, 3) = 200 
    ^
SyntaxError: can't assign to function call 

und

m[0, 2] = 200 
    m[0, 2] = 200 
    File "/Users/xavier/python/3.5/lib/python3.5/site-packages/rpy2/robjects/vectors.py", line 261, in __setitem__ 
    res = super(Vector, self).__setitem__(i, value) 
TypeError: VectorSexp indices must be integers, not tuple 

Wie kann ich einen Wert einer Zeile, Spalte dieser Matrix zugewiesen werden?

+1

'rpy2 rx' schlägt' m.rx googeln [1, 3] = 200' funktionieren könnte. – user2357112

Antwort

1

Dies sollte normalerweise in der Dokumentation beschrieben werden.

Lassen Sie uns wissen, wenn die folgende ist nicht die Frage zu beantworten: http://rpy2.readthedocs.io/en/version_2.8.x/vector.html#assigning-r-style

+0

Die Dokumentation ist für Vektor und erwähnt nicht, dass Sie m.rx [i, j], R-Stil Indizierung tun können. Es funktioniert jedoch, wie Benutzer2357112 erwähnt. – Calimo

+0

Eigentlich möchte ich hinzufügen, das doc schlägt nie vor, man kann zwei Indizes mit einer eckigen Klammer verwenden. Das einzige Mal, dass ich zwei Indizes sehe, ist es mit einer runden Klammer nach '.rx', und das funktioniert nicht für die Zuweisung. Ich schlage vor, einfach einen Zuweisungsunterabschnitt für Matrizen direkt nach der Extraktion http://rpy2.readthedocs.io/en/version_2.8.x/vector.html#extracting hinzuzufügen, der die '.rx [i, j]' Syntax präsentieren kann . – Calimo

+0

@Calimo Danke. Ich werde versuchen, dem Dokument ein Beispiel hinzuzufügen. Vektoren, Matrizen und Arrays sind in etwa die gleichen (in R): ein zusammenhängender Speicherbereich mit Dimensionen. Sie können mich auch dazu schlagen und eine Pull-Anfrage einreichen. – lgautier