от CSV до Ndarray и RPY2,
Вопрос
Я могу сделать Numpy 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 Data Frame, используемый 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.
Решение
Я не на 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), если это возможно.
Кто -нибудь из этих методов приведет вас туда, где вам нужно быть?
Другие советы
Просто чтобы получить DataFrame RPY2 из файла CSV, в RPY2.3, вы можете просто сделать:
df = robjects.DataFrame.from_csvfile('filename.csv')
Документация здесь.