Revision: 426 http://rpy.svn.sourceforge.net/rpy/?rev=426&view=rev Author: lgautier Date: 2008-03-08 07:35:22 -0800 (Sat, 08 Mar 2008)
Log Message: ----------- - Added tests - Fixed subsetting Modified Paths: -------------- trunk/sandbox/rpy_nextgen/rpy/robjects/__init__.py Added Paths: ----------- trunk/sandbox/rpy_nextgen/rpy/robjects/tests/testRobjects.py Modified: trunk/sandbox/rpy_nextgen/rpy/robjects/__init__.py =================================================================== --- trunk/sandbox/rpy_nextgen/rpy/robjects/__init__.py 2008-03-08 15:34:09 UTC (rev 425) +++ trunk/sandbox/rpy_nextgen/rpy/robjects/__init__.py 2008-03-08 15:35:22 UTC (rev 426) @@ -95,9 +95,9 @@ - an index is itself a vector of elements to select """ for a in args: - if not isinstance(a, rinterface.SexpVector): + if not isinstance(a, Rvector): raise(TypeError("Subset only take R vectors")) - res = rinterface.globalEnv.get("[")([self._sexp, ] + args, **kwargs) + res = r["["](*([self._sexp, ] + list(args)), **kwargs) return res def __getitem__(self, i): Added: trunk/sandbox/rpy_nextgen/rpy/robjects/tests/testRobjects.py =================================================================== --- trunk/sandbox/rpy_nextgen/rpy/robjects/tests/testRobjects.py (rev 0) +++ trunk/sandbox/rpy_nextgen/rpy/robjects/tests/testRobjects.py 2008-03-08 15:35:22 UTC (rev 426) @@ -0,0 +1,47 @@ +import unittest +import rpy.robjects as robjects +import array + +class RvectorTestCase(unittest.TestCase): + + def testGetItem(self): + letters_R = robjects.r["letters"] + self.assertTrue(isinstance(letters_R, robjects.Rvector)) + letters = (('a', 0), ('b', 1), ('c', 2), ('x', 23), ('y', 24), ('z', 25)) + for l, i in letters: + self.assertTrue(letters_R[i] == l) + + as_list_R = robjects.r["as.list"] + seq_R = robjects.r["seq"] + + mySeq = seq_R(0, 10) + + myList = as_list_R(mySeq) + + for i, li in enumerate(myList): + self.assertEquals(i, myList[i][0]) + + def testOperators(self): + seq_R = robjects.r["seq"] + mySeq = seq_R(0, 10) + mySeqAdd = mySeq + 2 + for i, li in enumerate(mySeq): + self.assertEquals(i + 2, mySeqAdd[i]) + + mySeqAdd = mySeq + mySeq + for i, li in enumerate(mySeq): + self.assertEquals(mySeq[i] * 2, mySeqAdd[i]) + + def testSubset(self): + seq_R = robjects.r["seq"] + mySeq = seq_R(0, 10) + # R indexing starts at one + myIndex = robjects.Rvector(array.array('i', range(1, 11, 2))) + + mySubset = mySeq.subset(myIndex) + for i, si in enumerate(myIndex): + self.assertEquals(mySeq[si-1], mySubset[i]) + + +if __name__ == '__main__': + unittest.main() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ rpy-list mailing list rpy-list@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/rpy-list