Pregunta

Puedo hacer ndarrays numpy con 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)

Sin embargo, no tengo idea de cómo tomar esto en un marco de datos utilizable por R 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.
¿Fue útil?

Solución

No estoy 100% seguro de entender su problema, pero un par de cosas:

1) si está bien, se puede leer un CSV en R directa, que es:

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

Después de lo cual se puede hacer referencia a la trama de datos resultante en las funciones posteriores.

O 2) se puede convertir una matriz numpy en una trama de datos - para hacer esto es necesario importar el paquete 'rpy2.robjects.numpy2ri'

A continuación, usted podría hacer algo como:

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)

o lo que otras funciones que quería. Puede haber una manera más directa -. Me frustro va entre los dos tipos de datos y por lo que estoy mucho más probable que utilice la opción 1) si es posible

¿Alguno de estos métodos se llega a donde tiene que ser?

Otros consejos

sólo para tener una trama de datos RPY2 desde un archivo csv, en RPY2.3, sólo puede hacer:

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

aquí .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top