Metodebiblioteket
  • Alle funksjoner
  • Veiledning
  • Status
    • Source Code
    • Report a Bug
  1. Integrering av R og Python
  • Bruk en funksjon i kode på Dapla Lab
  • Integrering av R og Python
  • Bidra til Metodebiblioteket
  • Hvordan å skrive enhetstester

Integrering av R og Python

Mange av funksjonene i Metodebiblioteket er skrevet i R, mens de fleste i SSB utvikler produksjonsløpene sine i Python. På denne siden finner du tips til hvordan du kan bruke R-funksjoner fra Python - og motsatt.

  • Hvis du har et Python-produksjonsløp, men ønsker å bruke en enkel R-funksjon, se Bruk av RWrapR
  • Hvis du har et Python-produksjonsløp, men ønsker å bruke én eller flere R-funksjoner til en relativt kompleks oppgaver, eller som involverer flere steg, se Kjøring av R-skriptfiler fra Python
  • Hvis du har et R-produksjonsløp, men ønsker å bruke en Python-funksjon, se Kjøring av Python funksjoner i R med reticulate

Bruk av RWrapR

Python-pakken RWrapR ble utviklet under Hack4SSB 2024. Den ligger på PyPI og er tilgjengelig for alle. Pakken gjør R-funksjoner tilgjengelige direkte i Python-miljøet. Dette kan være en god løsning når du kun ønsker å bruke én R-funksjon i et ellers Python-basert produksjonsløp.

Pakken er fortsatt under utvikling og mangler noe funksjonalitet, for eksempel håndtering av manglende data, så vær forsiktig og test godt. Pakken RWrapR kan installeres fra PYPI med:

poetry add rwrapr

Se videoen under og koden rwrapr_kjoring.py for eksempler.

For mer detaljer, se dokumentsidene for RWrapR.

Kjøring av R-skriptfiler fra Python

Selvstendige R-skriptfiler kan kjøres fra Python ved hjelp av et kall til terminalen med Rscript. Med «selvstendige» menes programmer som kan kjøres uavhengig, uten avhengighet til andre systemer eller variabler som allerede ligger i minnet. Fordelen med denne metoden er at den benytter renv-miljøet og gi bedre kontroll over håndtering av datatyper, manglende verdier og lignende, ettersom dette kan verifiseres ved å kjøre programmet direkte i R.

Vi anbefaler å bruke subprocess i Python for å utføre kjøringen. For eksempel, for å kjøre et R-skript med navn lage_statistikk.R, kan følgende kode benyttes:

import subprocess

subprocess.run(["Rscript", "lager_statistikk.R"])

Se videoen under og kode subprocess_kjoring.py for eksempler.

Kjøring av Python-funksjoner i R med reticulate

Python-funksjoner kan kjøres direkte fra R ved hjelp av pakken reticulate. Denne pakken gjør det mulig å integrere Python-kode i R-skript, og gir dermed en fleksibel løsning når R-produksjonsløp krever funksjonalitet fra Python. Fordelen med denne metoden er at den gir sømløs integrasjon mellom R og Python, inkludert deling av objekter mellom språkene. Dette gjør det enklere å kombinere styrkene fra begge miljøer i én arbeidsflyt. For å bruke reticulate, må pakken installeres i R:

renv::install("reticulate")

Se videoen under og koden reticulate_kjoring.R for eksempler.