Next: Caveat and bugs, Previous: Input/Output functions, Up: Top
The rpy module includes some utility functions:
as_list(obj)obj is a list or an object which supports the list protocol,
it returns obj. Otherwise, it returns the one element list
[obj].
This function is useful when testing whether a Robj has some
given attribute. For example:
>>> 'class' in as_list(r.attributes(robj))
The reason for not doing 'class' in r.attributes(robj) is that
r.attributes can return either None (when robj has no
attributes), a string (when robj has only one attribute) or a
list of strings (when it has several attributes). Function
as_list unify these three cases to allow the in test.
r(s)s is a string containing arbitrary R code.
Function r evaluates the string s in the R
interpreter and returns its result.
This function is useful when working with R constructions which have no parallel Python syntax, such as linear models, for example.
>>> set_default_mode(NO_CONVERSION)
>>> d = r.data_frame(x=[1,2,3], y=[4,5,6])
>>>
>>> model = r("y ~ x")
>>> fitted_model = r.lm(model, data = d)
Complete fragments of R code can also be evaluated (note that the
value returned by the function r is the value of the last
expression):
>>> r("""
... print(5)
... x <- "foo"
... print(x)
... """)
[1] 5
[1] "foo"
'foo'
This function is useful, also, when a changing R object is
required. Since the expression r.foo is cached in a Python
dictionary, later changes in the object pointed by r.foo are not
seen. In that case, the proper expression to use is r('foo'),
which evaluates foo and returns its result every time it is
called.
start_r_eventloop()stop_r_eventloop()start_r_eventloop function is executed. Normally,
in interactive use, you needn't stop it.
The R event loop keeps running in a daemonic thread. In case you need
finer control over that loop, you can use the r_events function.
r_events([usec])If, for some reason, you don't want to use the threaded event loop and
you want to manually use r_events, you can do some loop like the
following:
>>> r.plot([1])
>>> while 'X11' in as_list(r('.Devices')):
... r_events()
The while loop will run until the graphics window is closed.