5

在 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))'
4

2 回答 2

5

如果你想使用 R 的 "[[<-" 操作符,你必须调用方法 rx2() (参见 [assigning, R-style][1])。

在 rpy2-2.2.0dev 中,您可以执行a.rx2[1] = b.

[1]:http ://rpy.sourceforge.net/rpy2/doc-2.2/html/vector.html#assigning-r-style赋值,R-style

于 2011-02-23T14:38:22.793 回答
1

我不确定您是否可以使用当前版本的 rpy2 执行此操作,但您可以尝试 rpy2.rlike.container.TaggedList 类,它可以充当 R 列表并支持附加、删除和重新标记项目。据我所知,列表和向量的分配中一定存在错误。

于 2011-02-23T00:33:45.097 回答