RE: [Rpy] [Fwd: Re: [Numpy-discussion] Possible example applicati on of the array interface]
Hi All, It is possible to establish conversion functions so that R dataframe, lists, and vector objects are better translated into python equivalents. I've made several aborted stabs at this, but my time has been extremely limited. The basic task is to create a functionally equivalent python class [The tricky bit here is that R list and vector objects have both order and names. It is possible to emulate this in python by creating a base object that maintains a dictionary of names in along side the data vector/matrix data.] See the example in the rpu documentation at http://rpy.sourceforge.net/rpy/doc/manual_html/DataFrame-class.html#DataFram e%20class. This shouldn't be very hard if someone can dedicate a bit of time to it. -Greg (Current RPy maintainer)
-----Original Message----- From: rpy-list-admin@lists.sourceforge.net [mailto:rpy-list-admin@lists.sourceforge.net]On Behalf Of Tim Churches Sent: Wednesday, April 06, 2005 4:22 PM To: rpy-list@lists.sourceforge.net Subject: [Rpy] [Fwd: Re: [Numpy-discussion] Possible example application of the array interface]
The following discussion occured on the Numeric Python mailing list. Others may wish to enjoin the conversation.
Tim C
-------- Original Message -------- Subject: Re: [Numpy-discussion] Possible example application of the array interface Date: Thu, 7 Apr 2005 03:10:08 +1000 (EST) From: Michael Sorich <mike_lists@yahoo.com.au> To: numpy-discussion@lists.sourceforge.net
I think that this is a great idea! While I have a strong preference for python, I generally use R for statistical analyses due to the large number of mature libraries available. There are also some aspects of the R data types (eg data-frames and column/row names for 2D arrays) that are really nice for spreadsheet like data. I hope that scipy.base record arrays will be as easily manipulated as data-frames are.
While RPy works well for small simple problems, there are data conversion limitations between R and Python. If one could efficiently convert between the major R data types and python scipy.base data types without loss of data, it would become possible to do most of the data manipulation in python and freely mix in R functions when required. This may encourage the use of python for the development of statistical routines.
From my meager understanding of RPy:
R vectors are converted to python lists. It may make more sense to convert them to an array (either stdlib or scipy.base version) - without copying data if possible.
R arrays and matrices are converted to Numeric arrays. Eg
In [8]: r.array([1,2,3,4,5,6],dim=[2,3]) Out[8]: array([[1, 3, 5], [2, 4, 6]])
However, column and row names (or dimnames for arrays with >2 dimensions) are lost in R->Py conversion. I do not know whether these conversions require copying of the data.
R data-frames are currently converted to python dictionaries and I don’t think that there is any simple way to convert a python object to an R data frame. This is the biggest limitation of rpy in my opinion.
In [16]: r.data_frame(col1=[1,2,3,4],col2=['one','two','three','four']) Out[16]: {'col2': ['one', 'two', 'three', 'four'], 'col1': [1, 2, 3, 4]}
If it were possible to convert between an R data-frame and a scipy.base record array without copying or losing data, RPy would become more useful.
I wish I understood C, scipy.base and R well enough to give this a go. However, this is Way over my head!
Mike
--- Magnus Lie Hetland <magnus@hetland.org> wrote:
I was just thinking about some experimental designs, and whether I could, perhaps, do the statistics in Python. I remembered having used RPy [1] briefly at some time (there may be other similar bindings out there -- I don't remember) and started thinking about whether I could, perhaps, combine it with numpy in some way. My first thought was to reimplement the relevant statistical functions; then I thought about how to convert data back and forth -- but then it occurred to me that R also uses arrays extensively, and that it could, perhaps, be possible to expose those (through something like RPy) through the array interface/protocol!
This would be (IMO) a good example of the benefits of the array protocol; it's not a matter of "getting yet another array module". RPy is an external library/language with *lots* of features that might be useful to numpy users, many of which aren't likely to be implemented in Python for quite a while, I'd guess (unless, perhaps, someone writes a translator from R, which I'm sure is doable).
I don't know enough (at least yet ;) about the implementation of RPy and the R library to say for sure whether this would even be possible, but it does seem like it could be really useful...
[1] rpy.sf.net
-- Magnus Lie Hetland Fall seven times, stand up eight http://hetland.org [Japanese proverb]
------------------------------------------------------- SF email is sponsored by - The IT Product Guide Read honest & candid reviews on hundreds of IT Products from real users. Discover which products truly live up to the hype. Start reading now. http://ads.osdn.com/?ad_ide95&alloc_id396&op=click _______________________________________________ rpy-list mailing list rpy-list@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/rpy-list
LEGAL NOTICE Unless expressly stated otherwise, this message is confidential and may be privileged. It is intended for the addressee(s) only. Access to this E-mail by anyone else is unauthorized. If you are not an addressee, any disclosure or copying of the contents of this E-mail or any action taken (or not taken) in reliance on it is unauthorized and may be unlawful. If you are not an addressee, please inform the sender immediately.
participants (1)
-
Warnes, Gregory R