我在 R 中有一个 data.frame。它包含很多数据:来自许多 (125) 数组的基因表达水平。我想要 Python 中的数据,主要是因为我在 R 方面的无能以及这应该是一个 30 分钟的工作。
我希望以下代码能够工作。要理解此代码,请知道该变量path
包含我的数据集的完整路径,加载时会为我提供一个名为immgen
. 知道这immgen
是一个对象(一个 BioconductorExpressionSet
对象),它exprs(immgen)
返回一个包含 125 列(实验)和数万行(命名基因)的数据框。(以防万一不清楚,这是Python代码,使用robjects.r调用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)
此代码运行,但expression_data
只是array([[1]])
.
我很确定这e
并不代表由于以下exprs()
原因生成的数据框:
In [40]: e._get_ncol()
Out[40]: 1
In [41]: e._get_nrow()
Out[41]: 1
但话说回来,谁知道呢?即使e
确实代表了我的 data.frame,它不会直接转换为数组也足够公平 - 数据框比数组(行名和列名)包含更多,所以也许生活不应该这么容易。但是我仍然无法弄清楚如何执行转换。文档对我来说有点太简洁了,尽管我对文档标题的有限理解意味着这应该是可能的。
有人有什么想法吗?