質問
rec2csvでnumpy ndarrayを作ることができます、
data = recfromcsv(dataset1, names=True)
xvars = ['exp','exp_sqr','wks','occ','ind','south','smsa','ms','union','ed','fem','blk']
y = data['lwage']
X = data[xvars]
c = ones_like(data['lwage'])
X = add_field(X, 'constant', c)
しかし、RPY2が使用できるRデータフレームにこれをどのように持ち込むかはわかりません。
p = roptim(theta,robjects.r['ols'],method="BFGS",hessian=True ,y= robjects.FloatVector(y),X = base.matrix(X))
ValueError: Nothing can be done for the type <class 'numpy.core.records.recarray'> at the moment.
p = roptim(theta,robjects.r['ols'],method="BFGS",hessian=True ,y= robjects.FloatVector(y),X = base.matrix(array(X)))
ValueError: Nothing can be done for the type <type 'numpy.ndarray'> at the moment.
解決
私はあなたの問題を理解していると確信していませんが、いくつかのことを理解しています:
1)問題ない場合は、CSVをRに直接読み取ることができます。つまり、次のとおりです。
robjects.r('name <- read.csv(filename.csv)')
その後、後の関数で結果のデータフレームを参照できます。
または2)numpy配列をデータフレームに変換することができます - これを行うには、パッケージ 'rpy2.robjects.numpy2ri'をインポートする必要があります。
その後、次のようなことができます。
array_ex = np.array([[4,3],[3,2], [1,5]])
rmatrix = robjects.r('matrix')
rdf = robjects.r('data.frame')
rlm = robjects.r('lm')
mat_ex = rmatrix(array_ex, ncol = 2)
df_ex = rdf(mat_ex)
fit_ex = rlm('X1 ~ X2', data = df_ex)
またはあなたが望んでいた他の機能。より直接的な方法があるかもしれません - 私は2つのデータ型の間を移動することにイライラするので、可能であればオプション1)を使用する可能性がはるかに高くなります。
これらの方法のいずれかがあなたが必要な場所にあなたを届けるでしょうか?
他のヒント
RPY2.3でCSVファイルからRPY2データフレームを取得するために、次のことができます。
df = robjects.DataFrame.from_csvfile('filename.csv')
ドキュメンテーション ここ.
所属していません StackOverflow