von CSV zu ndarray und rpy2,
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.
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üssenDann 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 .