Tengo un data.frame en R. Contiene una gran cantidad de datos: niveles de expresión génica de muchas (125) matrices. Me gustaría que los datos en Python, debido principalmente a mi incompetencia en R y el hecho de que se suponía que era un trabajo de 30 minutos.rpy2: Convertir un data.frame en una matriz numpy
Me gustaría que el siguiente código funcione. Para entender este código, sepa que la variable path
contiene la ruta completa a mi conjunto de datos que, cuando se carga, me da una variable llamada immgen
. Sepa que immgen
es un objeto (un objeto Bioconductor ExpressionSet
) y que exprs(immgen)
devuelve un marco de datos con 125 columnas (experimentos) y decenas de miles de filas (genes nombrados). (Sólo en caso de que no está claro, se trata de código Python, utilizando robjects.r llamar código 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)
Este código se ejecuta, pero expression_data
es simplemente array([[1]])
.
estoy bastante seguro de que e
no representa la trama de datos generada por exprs()
debido a cosas como:
In [40]: e._get_ncol()
Out[40]: 1
In [41]: e._get_nrow()
Out[41]: 1
Pero, de nuevo ¿quién sabe? Incluso si e
representara mi data.frame, que no se convierta directamente en una matriz sería lo suficientemente justo - un marco de datos tiene más que una matriz (nombres de fila y colnames) y así quizás la vida no debería ser tan fácil . Sin embargo, todavía no puedo encontrar la forma de realizar la conversión. La documentación es demasiado escueta para mí, aunque mi comprensión limitada de los títulos en los documentos implica que esto debería ser posible.
¿Alguien tiene alguna idea?
argh tienes razón. Es una matriz. Eso es genial, gracias. Solo para que la solución sea clara, puedo hacerlo: e = np .array (robjects.r ('exprs (immgen)')) y ahora e es una matriz numpy con todos mis números de coma flotante. Gracias Laurent. Estoy interesado en las cosas de bioC rpy2, pero no puedo conseguirlo para instalar. Una pregunta para la lista de soporte aunque tal vez ... –