我正在尝试将R矩阵转换为pandas数据帧。我正在使用:
import pandas.rpy.common as com
df = com.convert_to_r_dataframe(r_matrix)
我得到了:
TypeError: 'float' object cannot be interpreted as an index
奇怪的是,我遇到的所有文档都省略了这个用例。我还决定将R矩阵转换为numpy
array
- 因为无论如何我都想迭代这些行。
答案 0 :(得分:3)
只需使用numpy.array()
:
from rpy2 import robjects
m = robjects.reval("matrix(1:6, nrow=2, ncol=3)")
import numpy as np
a = np.array(m)
答案 1 :(得分:1)
我认为您对convert_to_r_dataframe
和convert_robj
之间的区别感到困惑。使用前一个用于转换 TO R
,后一个用于从R
转换 BACK :
In [30]:
from rpy2 import robjects
m=robjects.r('matrix(1:6, nrow=2, ncol=3)')
In [31]:
print com.convert_robj(m)
0 1 2
1 1 3 5
2 2 4 6
In [32]:
m=robjects.r('as.data.frame(matrix(1:6, nrow=2, ncol=3, dimnames=list(1:2, 1:3)))')
In [33]:
print com.convert_robj(m)
1 2 3
1 1 3 5
2 2 4 6