¿Cómo usar Python en R con paquete Reticulate en RMarkDown?
Ejemplo 01: Instalación en un trozo (chunks) de R
# Instalamos el paquete que permite usar python en R
install.packages("reticulate", dependecies = TRUE)
# Importamos el paquete
library(reticulate)
# Asegurarnos de usar la versión de python que queramos (podemos tener más de una versión instalada)
use_python("C:\\Users\\Alberto\\AppData\\Local\\Programs\\Python\\Python39\\python.exe", required = TRUE)
Ejemplo 02: Comprobar que estamos usando la versión de python que
deseamos en un trozo (chunks) de R
# Importamos librería python y la asignamos a una variable
sys = import("sys")
# Usamos un método "version" de la librería sys con el operador "$"
print(sys$version)
[1] "3.9.8 (tags/v3.9.8:bb3fdcf, Nov 5 2021, 20:48:33) [MSC v.1929 64 bit (AMD64)]"
# Opcionalmente podemos ver más detalles con la función py_config()
py_config()
python: C:/Users/Alberto/AppData/Local/Programs/Python/Python39/python.exe
libpython: C:/Users/Alberto/AppData/Local/Programs/Python/Python39/python39.dll
pythonhome: C:/Users/Alberto/AppData/Local/Programs/Python/Python39
version: 3.9.8 (tags/v3.9.8:bb3fdcf, Nov 5 2021, 20:48:33) [MSC v.1929 64 bit (AMD64)]
Architecture: 64bit
numpy: C:/Users/Alberto/AppData/Local/Programs/Python/Python39/Lib/site-packages/numpy
numpy_version: 1.23.4
sys: [builtin module]
NOTE: Python version was forced by RETICULATE_PYTHON
# Nota: Se puede instalar paquetes de python con la función py_install()
# pero crea un entorno virtual. Se recomienda mejor instalar por consola las librerías
# con "pip install librería" y para listar lo instalado con "pip list"
Ejemplo 03: Crear una función de python en un script desde R
# Ir al menú File > New File > Python Script y guardarlo como "sumax.py"
# Lo dejamos en el misma carpeta de R en la que estemos trabajando
def sumax(a,b):
return a+b
Ejemplo 04: Utilizar una función desde un script en python desde un
trazo (chunks) desde R
# Importamos el script hacia R
source_python("sumax.py")
# Utilizamos directamente la función
print(sumax(2,3))
[1] 5
Ejemplo 05: Creamos una clase python y la guardamos como
operaciones.py
# Ir al menú File > New File > Python Script > y creamos script "operaciones.py"
# Lo dejamos en la misma carpeta de R en que estemos trabajando
# Generamos una clase
class operaciones:
def suma(self,a,b):
return a + b
def resta(self,a,b):
return a - b
Ejemplo 06: Usamos una clase de python externa en un trozo (chunks)
de R
# Cargamos la clase a una variable
source_python("operaciones.py")
# Instanciamos la clase
op = operaciones()
# Usamos el método suma
op$suma(2,4)
[1] 6
# Usamos el método resta
op$resta(2,4)
[1] -2
Ejemplo 07: Uso de la función py_run_file() en un trozo (chuks) de
R
# Ir al menú File > New File > Python Script > y creamos script "ejemplo.py"
# Dentro ingresamos solo esta línea => my_var = "Esto es un ejemplo"
py_run_file("ejemplo.py")
# A través de py extraemos la variable traída desde python
print(py$my_var)
[1] "Esto es un ejemplo"
Ejemplo 08: En un trazo (chunks) de python creamos un
diccionario
# Nota: Queda desde de una única sesión para ser reutilizada.
diccionario = {"nombre":"alberto","pais":"chile"}
Ejemplo 09: En un trazo (chunks) de R nos traemos una variable de un
trazo python
print(py$diccionario$pais)
[1] "chile"
Ejemplo 11: Exponemos dataframe de R a PYTHON a través de un trozo
(chunks) de R
datos = iris
head(datos)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
datos_python = r_to_py(datos)
Ejemplo 12: Usamos la variable expuesta desde R a través de un trozo
(chunks) de Python
# Con el objeto r podemos tener acceso a todas las variables de R a partir de fragmentos de python
r.datos_python.head()
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
0 5.1 3.5 1.4 0.2 setosa
1 4.9 3.0 1.4 0.2 setosa
2 4.7 3.2 1.3 0.2 setosa
3 4.6 3.1 1.5 0.2 setosa
4 5.0 3.6 1.4 0.2 setosa