This exercises the first half of what's on the linked page. Python code followed output in bold.

```
```

import rpy2.robjects as robjects

from rpy2.robjects.packages import importr

r = robjects.r

g = robjects.globalenv

print type(r)

**
**

<class 'rpy2.robjects.R'>

```
```

# from the R base package

# any other name comes from .globalEnv

pi = r['pi']

print pi[0]

print type(pi)

**
**

3.14159265359

<class 'rpy2.robjects.vectors.FloatVector'>

```
```

# r is callable with code to be evaluated

piplus = r('piplus = pi + 1')

print type(piplus)

print piplus

print piplus[0]

**
**

<class 'rpy2.robjects.vectors.FloatVector'>

[1] 4.141593

4.14159265359

[1] 4.141593

```
```

# explicitly get from .globalEnv

piplus_from_g = g['piplus']

print piplus_from_g

print piplus == piplus_from_g

print piplus[0] == piplus_from_g[0]

**
**

False

True

```
```

# define an R function and call it

r('''

f <- function(start=1,stop = 5) {

n = 0

for (j in start:stop) { n = n + j }

print (n)

}

''')

# it's available in .globalEnv

f = g['f']

f()

**
**

[1] 15

```
```

# but also from the running R process

f = r['f']

f(4)

**
**

[1] 9

```
```

# interpolating an R object into code

letters = robjects.r['letters']

s = letters[1:6].r_repr()

rcode = 'paste(%s, collapse="-")' %(s)

res = robjects.r(rcode)

print(res)

**
**

[1] "b-c-d-e-f"

```
```

# more on calling R functions

rsum = r['sum']

print rsum(robjects.IntVector([1,2,3]))[0]

**
**

6

```
```

# with keyword

rsort = r['sort']

iv = robjects.IntVector([3,1,2])

res = rsort(iv, decreasing=True)

print res.r_repr()

**
**

c(3L, 2L, 1L)

```
```

# plotting

gd = importr('grDevices')

ofn = '/Users/telliott_admin/Desktop/plot.pdf'

gd.pdf(ofn)

x = robjects.IntVector(range(10))

y = r.rnorm(10)

r.layout(r.matrix(robjects.IntVector([1,2,3,2]), nrow=2, ncol=2))

r.plot(r.runif(10), y, xlab="runif", ylab="foo/bar", col="red")

gd.dev_off()

Finally, there are R's special operators like

`%in%`

and `%*%`

. I didn't find this yet, so try wrapping it:
```
```

r('''

is_in <- function(value, container) {

value %in% container

}

''')

is_in = g['is_in']

L = robjects.StrVector(list('abcde'))

print is_in('a',L)

print is_in('f',L)

**
**

[1] TRUE

[1] FALSE

```
```

r('''m_mult <- function(m1,m0) { m1 %*% m0 }''')

m_mult = g['m_mult']

r('''mtoi <- function(m) { as.integer(m) }''')

mtoi = g['mtoi']

# an old friend

m0 = r.matrix(robjects.IntVector([0,1,1,1]), nrow=2)

m = m0

for i in range(10):

print i + 3,

m = m_mult(m,m0)

print mtoi(m)

**
**

3 [1] 1 1 1 2

4 [1] 1 2 2 3

5 [1] 2 3 3 5

6 [1] 3 5 5 8

7 [1] 5 8 8 13

8 [1] 8 13 13 21

9 [1] 13 21 21 34

10 [1] 21 34 34 55

11 [1] 34 55 55 89

12 [1] 55 89 89 144