Question

Je peux faire ndarrays numpy avec rec2csv,

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)

Mais, je ne sais pas comment prendre cela en un utilisable de trame de données R par 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.
Était-ce utile?

La solution

Je ne suis pas 100% sûr que je comprends votre question, mais deux choses:

1) si elle est ok, vous pouvez lire un fichier CSV en R directement, qui est:

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

Après quoi vous pouvez vous référer à la trame de données dans les fonctions ultérieures résultant.

Ou 2) vous pouvez convertir un tableau de numpy dans une trame de données - pour ce faire, vous devez importer le package « rpy2.robjects.numpy2ri »

Ensuite, vous pouvez faire quelque chose comme:

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)

Ou quelles que soient les autres fonctions que vous vouliez. Il peut y avoir une façon plus directe -. Je suis frustré d'aller entre les deux types de données et je suis beaucoup plus susceptibles d'option d'utilisation 1) si possible

Would une de ces méthodes que vous obtenez à l'endroit où vous devez être?

Autres conseils

Juste pour obtenir une trame de données de RPY2 à partir d'un fichier csv, dans RPY2.3, vous pouvez simplement faire:

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

Documentation ici .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top