от CSV до ndarray и rpy2, - PullRequest
       3

от CSV до ndarray и rpy2,

2 голосов
/ 15 ноября 2010

Я могу сделать numy ndarrays с 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)

Но я понятия не имею, как перенести это в кадр данных 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.

Ответы [ 2 ]

3 голосов
/ 16 января 2012

Просто чтобы получить RPF2 DataFrame из CSV-файла, в RPY2.3 вы можете просто сделать:

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

Документация здесь .

1 голос
/ 16 ноября 2010

Я не уверен на 100%, что понимаю вашу проблему, но пара вещей:

1) если все в порядке, вы можете напрямую прочитать csv в R, то есть:

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

После чего вы можете ссылаться на результирующий фрейм данных в последующих функциях.

Или 2) вы можете конвертировать массив numpy в фрейм данных - для этого вам необходимо импортировать пакет 'rpy2.robjects.numpy2ri '

Тогда вы можете сделать что-то вроде:

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)

или любых других функций, которые вы хотели.Может быть более прямой путь - я расстроен, переходя между двумя типами данных, и поэтому я с большей вероятностью буду использовать вариант 1), если это возможно.

Будет ли любой из этих методов доставить вас туда, где вам нужнобыть?

...