2

rec2csvでnumpyndarraysを作成できます。

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.
4

2 に答える 2

3

csvファイルからRPY2DataFrameを取得するには、RPY2.3で次の操作を実行できます。

df = robjects.DataFrame.from_csvfile('filename.csv')

ここのドキュメント。

于 2012-01-16T16:05:12.870 に答える
1

私はあなたの問題を100%理解しているとは思いませんが、いくつかのことがあります。

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)を使用する可能性がはるかに高くなります。

これらの方法のどちらかで、必要な場所にたどり着くことができますか?

于 2010-11-16T19:36:11.893 に答える