On Wed, May 18, 2011 at 2:16 PM, William Stein <wst...@gmail.com> wrote: > On Wed, May 18, 2011 at 12:24 PM, kcrisman <kcris...@gmail.com> wrote: >> On the page you linked to: >> "This the documentation for what will be soon the older version of >> rpy2. Do consider the upcoming 2.1.x releases if you are starting a >> project now." >> >> If you look at http://rpy.sourceforge.net/rpy2/doc-2.2/html/changes.html >> it also seems like in higher-numbered releases there are changes in >> this functionality. Maybe this is a known bug; can you try >> >> from rpy2.robjects.numpy2ri import numpy2ri >> ro.conversion.py2ri = numpy2ri >> >> as on the 2.2 documentation and see if that works. > > Nope, not at all. > >> That said, I never use it - I always use the Sage pexpect interface to >> R. But now I will bookmark this worksheet if I get the chance to give >> another R/Sage talk! > > The Sage pexpect is slow and brittle if the size of data you need to > move into or out of R is large. The rpy2 interface is much more > robust in this regard. > But rpy2 is also somewhat weird and wacky, as I learned today.
And, surprisingly, it is not very fast for evaluating basic expression. It's really *shockingly* slow for a C library interface. I don't know how it can be so bad: sage: import rpy2.robjects as robjects sage: R = robjects.r sage: print R('2 + 3') # the rpy2 cython interface (note the import!) [1] 5 sage: timeit("r('2+3')") 5 loops, best of 3: 1.46 ms per loop sage: timeit("R('2+3')") 625 loops, best of 3: 686 µs per loop sage: timeit("pari('2+3')") 625 loops, best of 3: 5.64 µs per loop Seriously? 686 microseconds to do 2+3? Our PARI C library interface does that in 5.64 microseconds. -- William > > > Maybe we need to upgrade the rpy2 in Sage... > > William > > >> >> On May 18, 2:14 pm, William Stein <wst...@gmail.com> wrote: >>> Hi, >>> >>> I was preparing a lecture [1] on rpy2 [2] in Sage (version 4.6.2) and notice >>> that the following very important central bit of rpy2 functionality -- >>> namely converting a numpy array to R -- seems to be horribly broken: >>> >>> sage: import rpy2.robjects as robjects # standard >>> sage: import rpy2.robjects.numpy2ri # enable automatic >>> conversion from numpy to R >>> sage: import numpy # make numpy available >>> sage: print robjects.r(numpy.array([1,2,3], dtype=float)) # try >>> it out; sad result. >>> [1] 3 >>> >>> The output *should* be a vector with 3 entries, I think. >>> There are similar problems with numpy arrays. >>> >>> The same problem happens with 4.7.rc1. >>> >>> I've never used rpy2 seriously before now, so if I'm just confused, >>> can somebody who knows rpy2 better let me know. >>> >>> -- William >>> >>> [1] http://flask.sagenb.org/home/pub/57/ >>> [2]http://rpy.sourceforge.net/rpy2/doc-2.0/html/numpy.html >>> >>> -- >>> William Stein >>> Professor of Mathematics >>> University of Washingtonhttp://wstein.org >> >> -- >> To post to this group, send an email to sage-devel@googlegroups.com >> To unsubscribe from this group, send an email to >> sage-devel+unsubscr...@googlegroups.com >> For more options, visit this group at >> http://groups.google.com/group/sage-devel >> URL: http://www.sagemath.org >> > > > > -- > William Stein > Professor of Mathematics > University of Washington > http://wstein.org > -- William Stein Professor of Mathematics University of Washington http://wstein.org -- To post to this group, send an email to sage-devel@googlegroups.com To unsubscribe from this group, send an email to sage-devel+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URL: http://www.sagemath.org