The error message is coming from R, and relates to an improper usage for the function adk_test. In other words, this is a case of RTFM ;-)
adk.adk_test(IntVector([1,2,3]), IntVector([4,5,6])) or adk.adk_test(Vector(IntVector([1,2,3]), IntVector([4,5,6]))) Should work. L. PS: rpy2-2.2.0-dev is currently the highest version number (and under development). On 11/20/10 11:03 PM, Giovanni Luca Ciampaglia wrote: > Btw, the same happens when using rimport: > > from rpy2.robjects.packages import importr > from rpy2.robjects import Vector > adk = importr('adk') > adk.adk_test(Vector([1,2,3]),Vector([4,5,6])) > > So far the only way to get a result was to directly pass a list, as in: > adk.adk_test([1,2,3,4]) > > but then it treats the four inputs as 4 independent, size 1 samples. > > G > > On 20/11/2010 22:02, Giovanni Luca Ciampaglia wrote: >> Hi all, >> I am trying to wrap adk.test from R package adk using rpy2 2.2.1 but I >> am running into problems with passing parameters to it. More >> specifically I get a runtime error in R: >> >>> In [1]: %run ad.py >>> Carico il pacchetto richiesto: adk >>> Error in sort.list(unique(x)) : >>> 'x' must be atomic for 'sort.list' >>> Have you called 'sort' on a list? >>> --------------------------------------------------------------------------- >>> RRuntimeError Traceback (most recent call >>> last) >>> >>> /home/giovanni/repos/peers/ad.py in<module>() >>> 20 if __name__ == '__main__': >>> 21 r_adk = R_factory() >>> ---> 22 r_adk(np.random.rand(100),np.random.rand(100)) >>> 23 >>> 24 >>> >>> /home/giovanni/repos/peers/ad.py in r_adk(*args) >>> 14 ''' >>> 15 args = map(Vector, map(list, args)) >>> ---> 16 return adk_test(*args) >>> 17 >>> 18 return r_adk >>> >>> /usr/lib/python2.6/dist-packages/rpy2/robjects/functions.pyc in >>> __call__(self, *args, **kwargs) >>> 81 v = kwargs.pop(k) >>> 82 kwargs[r_k] = v >>> ---> 83 return super(SignatureTranslatedFunction, >>> self).__call__(*args, **kwargs) >>> 84 >>> 85 >>> >>> /usr/lib/python2.6/dist-packages/rpy2/robjects/functions.pyc in >>> __call__(self, *args, **kwargs) >>> 33 for k, v in kwargs.iteritems(): >>> 34 new_kwargs[k] = conversion.py2ri(v) >>> ---> 35 res = super(Function, self).__call__(*new_args, >>> **new_kwargs) >>> 36 res = conversion.ri2py(res) >>> 37 return res >>> >>> RRuntimeError: Error in sort.list(unique(x)) : >>> 'x' must be atomic for 'sort.list' >>> Have you called 'sort' on a list? >> What I do in Python is the following: >> >> >> **************** >> >> ''' Anderson-Darling k-samples test ''' >> >> import numpy as np >> >> def R_factory(): >> from rpy2.robjects import r, Vector >> require = r['require'] >> require('adk') >> adk_test = r['adk.test'] >> >> def r_adk(*args): >> ''' >> R version from adk >> ''' >> args = map(Vector, map(list, args)) >> return adk_test(*args) >> >> return r_adk >> >> if __name__ == '__main__': >> r_adk = R_factory() >> r_adk(np.random.rand(100),np.random.rand(100)) >> >> ************* >> >> The actual code of adk.test is: >> >>> function (...) >>> { >>> if (nargs() == 1& is.list(list(...)[[1]])) { >>> samples<- list(...)[[1]] >>> } >>> else { >>> samples<- list(...) >>> } >>> k<- length(samples) >>> if (k< 2) >>> stop("Must have at least two samples.") >>> ns<- sapply(samples, length) >>> if (any(ns == 0)) >>> stop("One or more samples have no observations.") >>> x<- NULL >>> for (i in 1:k) x<- c(x, samples[[i]]) >>> n<- length(x) >>> Z.star<- sort(unique(x)) >> I also tried putting the Vectors in an R list and passing that to r_adk >> or redefining r_adk(a,b) instead of r_adk(*args) but doesn't seem to >> like both. I am not an R expert so forgive if it's a very silly question. >> >> Best >> >> G >> >> >> >> ------------------------------------------------------------------------------ >> Beautiful is writing same markup. Internet Explorer 9 supports >> standards for HTML5, CSS3, SVG 1.1, ECMAScript5, and DOM L2& L3. >> Spend less time writing and rewriting code and more time creating great >> experiences on the web. Be a part of the beta today >> http://p.sf.net/sfu/msIE9-sfdev2dev >> _______________________________________________ >> rpy-list mailing list >> rpy-list@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/rpy-list > > > ------------------------------------------------------------------------------ > Beautiful is writing same markup. Internet Explorer 9 supports > standards for HTML5, CSS3, SVG 1.1, ECMAScript5, and DOM L2& L3. > Spend less time writing and rewriting code and more time creating great > experiences on the web. Be a part of the beta today > http://p.sf.net/sfu/msIE9-sfdev2dev > _______________________________________________ > rpy-list mailing list > rpy-list@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/rpy-list ------------------------------------------------------------------------------ Beautiful is writing same markup. Internet Explorer 9 supports standards for HTML5, CSS3, SVG 1.1, ECMAScript5, and DOM L2 & L3. Spend less time writing and rewriting code and more time creating great experiences on the web. Be a part of the beta today http://p.sf.net/sfu/msIE9-sfdev2dev _______________________________________________ rpy-list mailing list rpy-list@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/rpy-list