【发布时间】:2018-01-05 15:12:59
【问题描述】:
如何在不丢失 R 矩阵的列名的情况下将保存为 RData 的 R 中的矩阵导入 pandas 数据框?
例如,如果我在 R 中保存了这个矩阵:
A = matrix(
c(2, 4, 3, 1, 5, 7), # the data elements
nrow=2, # number of rows
ncol=3, # number of columns
byrow = TRUE) # fill matrix by rows
dimnames(A) = list(
c("row1", "row2"), # row names
c("col1", "col2", "col3")) # column names
A
save (A, file = 'matrix.RData')
输出:
> A
col1 col2 col3
row1 2 4 3
row2 1 5 7
然后用rpy2在python中加载如下:
from __future__ import print_function
from rpy2.robjects import pandas2ri,r
import rpy2.robjects as robjects
def main():
pandas2ri.activate()
r['load']('matrix.RData')
variables = tuple(robjects.globalenv.keys())
print('variables: {0}'.format(variables))
matrix = robjects.globalenv['A']
frame = pandas2ri.ri2py(matrix)
print(frame)
print('type(frame): {0}'.format(type(frame)))
if __name__ == "__main__":
main()
打印:
variables: ('A',)
[[ 2. 4. 3.]
[ 1. 5. 7.]]
type(frame): <type 'numpy.ndarray'>
矩阵丢失了他的列名。我想通过将 R 加载到 pandas 数据框中来保留它们。
【问题讨论】:
标签: python r pandas dataframe rpy2