Revision: 667
          http://rpy.svn.sourceforge.net/rpy/?rev=667&view=rev
Author:   lgautier
Date:     2008-10-29 09:38:54 +0000 (Wed, 29 Oct 2008)

Log Message:
-----------
doc:
  - more in the introduction
  - cross-refs

Modified Paths:
--------------
    branches/rpy_nextgen/doc/source/introduction.rst
    branches/rpy_nextgen/doc/source/rinterface.rst
    branches/rpy_nextgen/doc/source/robjects.rst

Modified: branches/rpy_nextgen/doc/source/introduction.rst
===================================================================
--- branches/rpy_nextgen/doc/source/introduction.rst    2008-10-28 19:28:14 UTC 
(rev 666)
+++ branches/rpy_nextgen/doc/source/introduction.rst    2008-10-29 09:38:54 UTC 
(rev 667)
@@ -3,7 +3,7 @@
 ********************
 
 
-This introduction aims at being a gentle start to rpy2,
+This introduction aims at making a gentle start to rpy2,
 either when coming from R to Python/rpy2, from Python to rpy2/R,
 or from elsewhere to Python/rpy2/R.
 
@@ -26,11 +26,17 @@
 The object :data:`r` in :mod:`rpy2.robjects` represents the running embedded
 `R` process.
 
-If familiar with R and the R console, :data:`r` is a little like your window
-to R from Python.
+If familiar with R and the R console, :data:`r` is a little like a
+communication channel from Python to R.
 
 
-The method :meth:`__getitem__` functions like calling a variable from the
+Getting R objects
+-----------------
+
+In Python the `[` operator is an alias for the  ethod :meth:`__getitem__`.
+
+With :mod:`rpy2.robjects`, 
+the method :meth:`__getitem__` functions like calling a variable from the
 R console.
 
 Example in R:
@@ -46,9 +52,15 @@
 
 
 
+Evaluating R code
+-----------------
+
 The :data:`r` object is also callable, and the string passed to it evaluated
-as `R` code:
+as `R` code.
 
+This can be used to `get` variables, and provide an alternative to
+the method presented above.
+
 Example in R:
 
 .. code-block:: r
@@ -61,7 +73,19 @@
 3.14159265358979
 
 
-The evaluation is performed in what is know to R users as the 
+.. warning::
+
+   The result is an R vector. Reading Section
+   :ref:`introduction-vectors` is recommended as it will provide explanations
+   for the following behavior:
+   
+   >>> robjects.r('pi') + 2
+   c(3.14159265358979, 2)
+   >>> robjects.r('pi')[0] + 2
+   5.1415926535897931
+
+
+The evaluation is performed in what is known to R users as the 
 `Global Environment`, that is the place one starts at when starting
 the R console. Whenever the `R` code creates variables, those
 variables will be "located" in that `Global Environment` by default.
@@ -77,7 +101,8 @@
           ''')
 
 
-The expression above will return the value 18.85, but also create an R function
+The expression above will return the value 18.85, 
+but first also creates an R function
 `f`. That function `f` is present in the R `Global Environement`, and can
 be accessed with the `__getitem__` mechanism outlined above:
 
@@ -88,7 +113,26 @@
     2 * pi * r
 }
 
+Interpolating R objects into R code strings
+-------------------------------------------
 
+Against the first impression one may get from the title
+of this section, simple and handy features of :mod:`rpy2` are
+presented here.
+
+An R object has a string representation that can be used
+directly into R code to be evaluated.
+
+Simple example:
+
+>>> letters = robjects.r['letters']
+>>> rcode = 'paste(%s, collapse="-")' %(repr(letters))
+>>> robjects.r(rcode)
+"a-b-c-d-e-f-g-h-i-j-k-l-m-n-o-p-q-r-s-t-u-v-w-x-y-z"
+
+
+.. _introduction-vectors:
+
 R vectors
 =========
 
@@ -101,7 +145,23 @@
 >>> len(robjects.r['pi'])
 1
 
+As such, the python method :meth:`add` will result in a concatenation
+(function `c()` in R), as this is the case for regular python lists.
 
+Accessing the one value in that vector will have to be stated
+explicitly:
+
+>>> robjects.r['pi'][0]
+3.1415926535897931
+
+There much that can be achieved with vector, having them to behave
+more like Python lists or R vectors.
+A comprehensive description of the behavior of vectors is found in
+:ref:`robjects-vectors`.
+
+Creating rpy2 vectors
+---------------------
+
 Creating R vectors can be achieved simply:
 
 >>> robjects.StrVector(['abc', 'def'])
@@ -112,7 +172,39 @@
 c(1.1, 2.2, 3.3)
 
 
-R matrixes and arrays are just vector with a `dim` attribute.
+R matrixes and arrays are just vectors with a `dim` attribute.
 
+The easiest way to create such objects is to do it through
+R functions:
 
- 
\ No newline at end of file
+>>> v = robjects.FloatVector([1.1, 2.2, 3.3, 4.4, 5.5, 6.6])
+>>> m = robjects.r['matrix'](v, nrow = 2)
+>>> print(m)
+     [,1] [,2] [,3]
+[1,]  1.1  3.3  5.5
+[2,]  2.2  4.4  6.6
+
+
+Calling R functions
+===================
+
+Calling R functions will be disappointingly similar to calling
+Python functions:
+
+>>> rsum = robjects.r['sum']
+>>> rsum(robjects.IntVector([1,2,3]))
+6L
+
+Keywords can be used with the same ease:
+
+>>> rsort = robjects.r['sort']
+>>> rsort(robjects.IntVector([1,2,3]), decreasing=True)
+c(3L, 2L, 1L)
+
+
+.. note::
+
+   By default, calling R functions will return R objects.
+
+
+More information on functions is in Section :ref:`robjects-functions`

Modified: branches/rpy_nextgen/doc/source/rinterface.rst
===================================================================
--- branches/rpy_nextgen/doc/source/rinterface.rst      2008-10-28 19:28:14 UTC 
(rev 666)
+++ branches/rpy_nextgen/doc/source/rinterface.rst      2008-10-29 09:38:54 UTC 
(rev 667)
@@ -406,6 +406,10 @@
    :show-inheritance:
    :members:
 
+.. autoclass:: rpy2.rinterface.BoolSexpVector
+   :show-inheritance:
+   :members:
+
 .. index::
    single: SexpEnvironment
    single: rinterface; SexpEnvironment
@@ -603,9 +607,11 @@
    pair: rinterface; function
 
 
-:class:`SexpClosure`
---------------------
+.. _rinterface-functions:
 
+Functions
+---------
+
 .. rubric:: A function with a context
 
 In R terminology, a closure is a function (with its enclosing

Modified: branches/rpy_nextgen/doc/source/robjects.rst
===================================================================
--- branches/rpy_nextgen/doc/source/robjects.rst        2008-10-28 19:28:14 UTC 
(rev 666)
+++ branches/rpy_nextgen/doc/source/robjects.rst        2008-10-29 09:38:54 UTC 
(rev 667)
@@ -143,6 +143,8 @@
 .. index::
    pair: robjects;RVector
 
+.. _robjects-vectors:
+
 Vectors
 =======
 
@@ -172,7 +174,24 @@
 :class:`IntVector`, :class:`FloatVector`, :class:`BoolVector`, 
:class:`StrVector` can
 used.
 
+.. autoclass:: rpy2.robjects.BoolVector
+   :show-inheritance:
+   :members:
 
+.. autoclass:: rpy2.robjects.IntVector
+   :show-inheritance:
+   :members:
+
+.. autoclass:: rpy2.robjects.FloatVector
+   :show-inheritance:
+   :members:
+
+.. autoclass:: rpy2.robjects.StrVector
+   :show-inheritance:
+   :members:
+
+
+
 .. index::
    pair: RVector;indexing
 
@@ -300,6 +319,8 @@
 A :class:`RMatrix` is a special case of :class:`RArray`.
 
 
+.. _robjects-dataframes:
+
 Data frames
 -----------
 
@@ -337,9 +358,8 @@
 In this example, will use the R function `data.frame()`, that
 constructs a data.frame from named arguments
 
->>> import array
->>> d = {'value': robjects.IntSexpVector((1,2,3)),
-         'letter': robjects.StrSexpVector(('x', 'y', 'z'))}
+>>> d = {'value': robjects.IntVector((1,2,3)),
+         'letter': robjects.StrVector(('x', 'y', 'z'))}
 >>> dataf = robjects.r['data.frame'](**d)
 >>> dataf.colnames()
 c("letter", "value")
@@ -411,16 +431,32 @@
    pair: robjects; RFunction
    pair: robjects; function
 
+.. _robjects-functions:
+
 Functions
 =========
 
+R functions are callable objects, and be called almost like any regular
+Python function:
+
 >>> plot = robjects.r.plot
 >>> rnorm = robjects.r.rnorm
 >>> plot(rnorm(100), ylab="random")
 
+In Python, arguments to a function are split into two groups:
 
+* A first group for which parameters are in defined order
+
+* A second group for which parameters are associated a name/keyword,
+  and a default value. In that second group the order is lost, as it is
+  passed as a Python dictionary.
+
+Those two groups can be used in function calls.
+
+
 The class inherits from the class
-:class:`rpy2.rinterface.SexpClosure`.
+:class:`rpy2.rinterface.SexpClosure`, and further documentation
+on the behavior of function can be found in Section 
:ref:`rinterface-functions`.
 
 .. index::
    pair: robjects; RFormula
@@ -588,12 +624,11 @@
 .. code-block:: python
 
    import rpy2.robjects as robjects
-   import array
 
    r = robjects.r
 
-   ctl = array.array('f', [4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14])
-   trt = array.array('f', [4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69])
+   ctl = 
robjects.FloatVector([4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14])
+   trt = 
robjects.FloatVector([4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69])
    group = r.gl(2, 10, 20, labels = ["Ctl","Trt"])
    weight = ctl + trt
 


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
rpy-list mailing list
rpy-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rpy-list

Reply via email to