Ich habe ein data.frame in R. Es enthält eine Menge Daten: Genexpressionsniveaus von vielen (125) Arrays. Ich hätte gerne die Daten in Python, hauptsächlich wegen meiner Inkompetenz in R und der Tatsache, dass dies ein 30-minütiger Job sein sollte.rpy2: Konvertieren eines data.frame in ein numpy Array
Ich möchte den folgenden Code zu arbeiten. Um diesen Code zu verstehen, wissen Sie, dass die Variable path
den vollständigen Pfad zu meinem Datensatz enthält, der mir beim Laden eine Variable namens immgen
gibt. Wisse, dass immgen
ein Objekt ist (ein Bioconductor ExpressionSet
Objekt) und dass exprs(immgen)
einen Datenrahmen mit 125 Spalten (Experimente) und Zehntausenden von Zeilen (benannte Gene) zurückgibt. (Für den Fall, es ist nicht klar, das ist Python-Code, robjects.r mit R-Code aufzurufen)
import numpy as np
import rpy2.robjects as robjects
# ... some code to build path
robjects.r("load('%s')"%path) # loads immgen
e = robjects.r['data.frame']("exprs(immgen)")
expression_data = np.array(e)
Dieser Code läuft, aber expression_data
ist einfach array([[1]])
.
Ich bin mir ziemlich sicher, dass e
nicht den Datenrahmen von exprs()
wie aufgrund Dinge erzeugt darstellt:
In [40]: e._get_ncol()
Out[40]: 1
In [41]: e._get_nrow()
Out[41]: 1
Aber dann wieder, wer weiß? Selbst wenn e
meinen data.frame repräsentierte, dass es nicht direkt in ein Array konvertiert, wäre das fair genug - ein Datenrahmen hat mehr drin als ein Array (rownames und colnames) und so sollte das Leben vielleicht nicht so einfach sein . Ich kann jedoch immer noch nicht herausfinden, wie ich die Konvertierung durchführen soll. Die Dokumentation ist für mich ein bisschen zu knapp, obwohl mein begrenztes Verständnis der Überschriften in den Dokumenten impliziert, dass dies möglich sein sollte.
Wer irgendwelche Gedanken?
Argh du hast Recht. Es ist eine Matrix. Das ist brilliant, danke. Nur so die Lösung ist klar, ich kann tun: e = np .array (robjects.r ('excrs (imggen)')) und jetzt ist e ein numper Array mit allen meinen Fließkommazahlen Thanks Laurent! Ich interessiere mich für das bioC rpy2-Zeug, kann es aber nicht bekommen eine Frage für die Supportliste zu installieren, aber vielleicht ... –