Как получить данные от R до панд
В блокноте Юпитера я создал 2-й список в R, как
%%R
first <- "first"
second <- "second"
names(first) <- "first_thing"
names(second) <- "second_thing"
x <- list()
index <- length(x)+1
x[[index]] = first
x[[index +1]] = second
%Rpull x
не возвращает хорошее представление, а скорее ListVector
, Как я могу преобразовать это во что-то более хорошее, например, в dict / pd.Dataframe? Пока что мне не повезло после http://pandas.pydata.org/pandas-docs/stable/r_interface.html
редактировать
Список, который я хочу преобразовать, представляет собой 2-й список, например results
обновленный код снят сверху
2 ответа
Просто нарезать ListVector
:
%Rpull x
pd.DataFrame(data=[i[0] for i in x], columns=['X'])
Если вы хотите словарь вместо:
dict([[i,j[0]] for i,j in enumerate(x)])
{0: 'first', 1: 'first'}
Поскольку вы создали список R (а не, скажем, фрейм данных), возвращаемый объект Python представляет собой ListVector
,
R списки могут иметь дублированные имена, что делает преобразование в dict
то, что не может быть гарантировано безопасным.
Если вам повезло и вы хотите диктовать, это довольно просто. Например:
from rpy2.robjects.vectors import ListVector
l = ListVector({'a':1, 'b':2})
d = dict(l.items())