Domanda

posso fare 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)

Ma, non ho idea di come prendere questo in una cornice di dati R utilizzabile da 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.
È stato utile?

Soluzione

Io non sono al 100% sicuro di aver capito il tuo problema, ma un paio di cose:

1) se va bene, si può leggere un file CSV in R direttamente, che è il seguente:

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

Dopo di che è possibile fare riferimento alla struttura dati risultanti nelle funzioni successive.

O 2) è possibile convertire un allineamento NumPy in una cornice di dati - per fare questo è necessario importare il pacchetto 'rpy2.robjects.numpy2ri'

Poi si potrebbe fare qualcosa di simile:

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 qualunque altre funzioni che volevi. Ci può essere un modo più diretto -. Mi sento frustrato in corso tra i due tipi di dati e quindi sono molto più probabile l'uso opzione 1), se possibile, a

Sarebbe uno di questi metodi si arriva al punto in cui è necessario essere?

Altri suggerimenti

Proprio per ottenere un dataframe RPY2 da un file CSV, in RPY2.3, si può solo fare:

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

qui .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top