de CSV à ndarray, et rpy2,
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.
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 .