Добавление элемента (вектора) в список в rpy2 - PullRequest
5 голосов
/ 23 февраля 2011

В R я могу легко добавлять элементы в список:

mylist = list()
mylist[[1]] = c(1,2)
mylist[[2]] = c(2,3)
mylist[[length(mylist)+1]] = c(3,4)

Как мне это сделать в rpy2?Я использую rpy2 2.1.9.Я попробовал следующее, но это не работает

import rpy2.robjects as robjects
a = robjects.r('list()')
b = robjects.IntVector([1,2])
a[0] = b
IndexError: Index out of range.
a[1] = b
IndexError: Index out of range.
aa = a.__add__(b) # But this makes a list out of the vector
aa.r_repr()
'list(1L, 2L)'
# We wanted something like the following instead:
aaa = robjects.r('list(c(1,2))')
aaa.r_repr()
'list(c(1, 2))'

Ответы [ 2 ]

4 голосов
/ 23 февраля 2011

Если вы хотите использовать оператор R "[[<-", вам нужно вызвать метод rx2 () (см. [назначение, стиль R] [1]). </p>

В rpy2-2.2.0dev вы можете сделать a.rx2[1] = b.

[1]: http://rpy.sourceforge.net/rpy2/doc-2.2/html/vector.html#assigning-r-style назначение, стиль R

1 голос
/ 23 февраля 2011

Я не уверен, что вы можете сделать это с текущей версией rpy2, но вы можете попробовать класс rpy2.rlike.container.TaggedList, который может действовать как список R и поддерживает добавление, удаление и повторную маркировку элементов , Насколько я могу судить, в задании для списков и векторов должна быть ошибка.

...