15.2 Run Python code and interact with Python

We know you love Python, so let’s make it super clear: R Markdown and knitr do support Python.

To add a Python code chunk to an R Markdown document, you can use the chunk header ```{python}, e.g.,

```{python}
print("Hello Python!")
```

You can add chunk options to the chunk header as usual, such as echo = FALSE or eval = FALSE. Plots drawn with the matplotlib package in Python are also supported.

The Python support in R Markdown and knitr is based on the reticulate package (Ushey, Allaire, and Tang 2020), and one important feature of this package is that it allows two-way communication between Python and R. For example, you may access or create Python variables from the R session via the object py in reticulate:

```{r, setup}
library(reticulate)
```

Create a variable `x` in the Python session:

```{python}
x = [1, 2, 3]
```

Access the Python variable `x` in an R code chunk:

```{r}
py$x
```

Create a new variable `y` in the Python session using R,
and pass a data frame to `y`:

```{r}
py$y <- head(cars)
```

Print the variable `y` in Python:

```{python}
print(y)
```

For more information about the reticulate package, you may see its documentation at https://rstudio.github.io/reticulate/.

References

Ushey, Kevin, JJ Allaire, and Yuan Tang. 2020. Reticulate: Interface to Python. https://github.com/rstudio/reticulate.