Один из способов достичь желаемого:
r_df[r_df.colnames.index('col1')] = base.as_Date(r_df.rx2('col1'), '%Y-%m-%d')
Почему что-то вроде r_df['col1']
не реализовано? Потому что R может быть своеобразным, и многие варианты в rpy2
предпочитают легкое раздражение источнику очень трудных для отладки проблем. Здесь это связано с тем, что имена столбцов в кадре данных R не обязательно должны быть уникальными, и получение элемента по имени вернет первый с этим именем. Например:
import rpy2.robjects as ro
dataf = ro.r('data.frame(x=1:3, x=4:6, check.names=FALSE)')
print(dataf)
# x x
# 1 1 4
# 2 2 5
# 3 3 6
dataf.rx2('x')
# R object with classes: ('RTYPES.INTSXP',) mapped to:
# [1, 2, 3]
Метод Python index
присутствует в Python list
, tuple
, et c ... и задокументирован для возврата первого соответствующего индекса. .