Ho un data.frame in R. Contiene molti dati: i livelli di espressione genica da molti (125) array. Mi piacerebbe i dati in Python, dovuti principalmente alla mia incompetenza in R e al fatto che questo doveva essere un lavoro di 30 minuti.rpy2: Conversione di un data.frame in una matrice numpy
Vorrei il seguente codice per funzionare. Per capire questo codice, sappi che la variabile path
contiene il percorso completo del mio set di dati che, quando caricato, mi dà una variabile chiamata immgen
. Sapere che immgen
è un oggetto (un oggetto Bioconductor ExpressionSet
) e che exprs(immgen)
restituisce un frame di dati con 125 colonne (esperimenti) e decine di migliaia di righe (denominate geni). (Solo nel caso non si capisce bene, questo è il codice Python, utilizzando robjects.r per chiamare il codice R)
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)
Questo codice viene eseguito, ma è semplicemente expression_data
array([[1]])
.
Sono abbastanza sicuro che e
non rappresenta la cornice di dati generato da exprs()
a causa di cose come:
In [40]: e._get_ncol()
Out[40]: 1
In [41]: e._get_nrow()
Out[41]: 1
Ma poi chi lo sa? Anche se e
rappresentasse il mio data.frame, che non converta direttamente in un array sarebbe abbastanza equo - un frame di dati ha più in esso di un array (rownames e colnames) e quindi forse la vita non dovrebbe essere così facile . Tuttavia non riesco ancora a capire come eseguire la conversione. La documentazione è un po 'troppo concisa per me, anche se la mia comprensione limitata dei titoli dei documenti implica che ciò dovrebbe essere possibile.
Qualche idea?
argh hai ragione, è una matrice.Questo è brillante, grazie.Ma solo la soluzione è chiara, posso fare: e = np .array (robjects.r ('exprs (immgen)')) e ora e è un array numpy con tutti i miei numeri in virgola mobile in esso. Grazie Laurent! Sono interessato alla roba di bioC rpy2, ma non riesco a ottenerlo installare. Una domanda per l'elenco di supporto anche se forse ... –