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