2013-05-07 19 views
0

ab 2個IntVectors的都是rpy2 IntVector S:差異RPY

<IntVector - Python:0x10676dfc8/R:0x7fc714d64948> 
[  81, NA_integer_, NA_integer_, ...,  120,  46, NA_integer_] 

我如何計算b - a區別?我想要結果爲IntVector

回答

0

嘗試使用R operator attribute .ro

In [1]: from rpy2 import robjects 

In [2]: x = robjects.IntVector(range(10)) 

In [3]: y = robjects.IntVector(range(10)) 

In [4]: x.ro-y 
Out[4]: 
<IntVector - Python:0x1067d3830/R:0x102d6ef20> 
[  0,  0,  0, ...,  0,  0,  0] 

In [5]: x.ro+y 
Out[5]: 
<IntVector - Python:0x1067d3cf8/R:0x102d6eec8> 
[  0,  2,  4, ...,  14,  16,  18] 
0
subtract = r('''function(x, y) x - y''') 
subtract(b, a) 

這個解決方案的好處是它不僅能處理IntVectors,還能處理任何R類型。 糟糕的是,將命令作爲字符串傳遞給R解釋器很醜陋。