The natural Python equivalent to a named list in R is a dict, but RPy2 gives you a ListVector object.
import rpy2.robjects as robjects
a = robjects.r(\'list
The following is my function for the conversion from an rpy2 ListVector to a python dict, capable of handling nested lists:
import rpy2.robjects as ro
from rpy2.robjects import pandas2ri
def r_list_to_py_dict(r_list):
converted = {}
for name in r_list.names:
val = r_list.rx(name)[0]
if isinstance(val, ro.vectors.DataFrame):
converted[name] = pandas2ri.ri2py_dataframe(val)
elif isinstance(val, ro.vectors.ListVector):
converted[name] = r_list_to_py_dict(val)
elif isinstance(val, ro.vectors.FloatVector) or isinstance(val, ro.vectors.StrVector):
if len(val) == 1:
converted[name] = val[0]
else:
converted[name] = list(val)
else: # single value
converted[name] = val
return converted