Frage

Ich kann numpy ndarrays mit rec2csv machen,

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)

Aber ich habe keine Ahnung, wie dies nehmen in eine R-Datenrahmen verwendbar durch Rpy2,

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.
War es hilfreich?

Lösung

Ich bin nicht 100% sicher, dass ich Ihre Frage verstehen, aber ein paar Dinge:

1), wenn es in Ordnung, Sie direkt eine csv in R lesen kann, das heißt:

robjects.r('name <- read.csv(filename.csv)')

Nach dem Sie zu dem resultierenden Datenrahmen in späteren Funktionen beziehen.

oder 2) können Sie eine numpy Array in einem Datenrahmen konvertieren -, dies zu tun Sie das Paket ‚rpy2.robjects.numpy2ri‘

importieren müssen

Dann könnte man so etwas wie:

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)

oder was auch immer andere Funktionen, die Sie wollten. Es kann ein direkterer Weg sein. - Ich frustriert zwischen den beiden Datentypen gehen und so ist mich viel eher zu verwenden Option 1), wenn möglich

Würde eine dieser Methoden erhalten Sie, wo Sie sein müssen?

Andere Tipps

Nur einen RPY2 Datenrahmen aus einer CSV-Datei zu erhalten, in RPY2.3, können Sie einfach tun:

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

Dokumentation hier .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top