Reputation: 17676
In a jupiter notebook I created some 2-d-list in R like
%%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
a %Rpull x
does not return the nice representation but rather a ListVector
. How can I convert it into something nicer e.g. a dict / pd.Dataframe? So far I had no luck following http://pandas.pydata.org/pandas-docs/stable/r_interface.html
The list I want to convert is a 2-d list like results
the updated code snipped from above
Upvotes: 3
Views: 870
Reputation: 29711
Just slice the ListVector
:
%Rpull x
pd.DataFrame(data=[i[0] for i in x], columns=['X'])
If you want a dictionary instead:
dict([[i,j[0]] for i,j in enumerate(x)])
{0: 'first', 1: 'first'}
Upvotes: 1
Reputation: 11545
Since you created an R list (rather than, say, a data frame),
the Python object returned is a ListVector
.
R lists can have duplicated names, making the conversion to a dict
something that cannot be guaranteed to be safe.
Should you feel lucky, and wanting a dict, it is rather straightforward. For example:
from rpy2.robjects.vectors import ListVector
l = ListVector({'a':1, 'b':2})
d = dict(l.items())
Upvotes: 0