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

Reply via email to