Crearea de script-uri R autonome pentru redarea documentelor Quarto folosind motorul knitr – prin amabilitatea noilor manageri de pachete R ir și uvr

URMĂREȘTE-NE
16,065FaniÎmi place
1,142CititoriConectați-vă

(Acest articol a fost publicat pentru prima dată pe R | Dr Tom Palmerși cu amabilitate a contribuit la R-bloggeri). (Puteți raporta problema legată de conținutul acestei pagini aici)


Doriți să vă distribuiți conținutul pe R-bloggeri? dați clic aici dacă aveți un blog, sau aici dacă nu aveți.

Introducere

În postările anterioare, am descris cum să utilizați funcția autonomă de scripturi Python în uv Manager de pachete Python pentru a crea medii virtuale pentru a reda documentele Quarto folosind nucleul Jupyter nbstata și kernel-ul python3. În acest post vă descriu cum să faceți același lucru pentru scripturile R pentru a reda documentele Quarto care rulează cod R folosind motorul knitr.

Am descoperit recent că acum există trei manageri de pachete inspirați de UV pentru R; ir, uvr și rv (… poate sunt mai multe?). Mă voi concentra asupra primelor două, deoarece permit definirea de scripturi R autonome. Găsesc scripturile autonome o modalitate rapidă și ușoară de a defini dependențele de proiect și foarte rar am nevoie de o înregistrare a versiunilor exacte ale pachetului.

În următoarele exemple presupun că creăm un script R, redă.Rcare conține unul sau mai multe apeluri către quarto::quarto_render() pentru o prelegere sau un tutorial. Pentru pachetele de dependență R includ pachetele de care are nevoie documentul în sine, plus pachetele quarto și knitr.

Exemplu de script R autonom folosind ir

Pentru a defini dependențe pentru irîn partea de sus a scriptului începe fiecare linie de comentariu cu #| apoi scrieți o listă sub a packages cheie după cum urmează – aceasta este lista de pachete de care am nevoie pentru unul dintre practicile mele despre datele lipsă.

#| packages:
#|   - gtsummary
#|   - haven
#|   - tidyverse
#|   - VIM
#|   - quarto
#|   - knitr

# Rest of R code follows ...
# ... essentially one or sometimes multiple quarto::quarto_render() calls

Acest script poate fi rulat cu

ir run render.R

Exemplu de script R autonom folosind uvr

uvr urmează aceeași sintaxă de dependență ca uv. Fiecare linie începe cu a # comentariu, iar dependențele sunt definite ca o matrice TOML de șiruri între # /// script şi # ///. Deci, vârful nostru redă.R scriptul arată după cum urmează.

# /// script
# dependencies = (
#   "gtsummary",
#   "haven",
#   "tidyverse",
#   "VIM",
#   "quarto",
#   "knitr",
# )
# ///

# Rest of R code follows ...
# ... essentially one or sometimes multiple quarto::quarto_render() calls

Acest script poate fi rulat cu

uvr run render.R

Automatizare cu just într-o structură complexă de directoare

Pentru fiecare curs pe care îl predau am prelegerea sau tutorialul într-un subdirector. Pentru a rula fiecare script, aș putea rula comenzile shell date mai sus. Pentru a îmbunătăți ușor eficiența, constat că punerea următorului fișier just în partea de sus a structurii de directoare economisește un pic de tastare. Prima reteta, renderfolosește biblioteca mea de sistem R, ceilalți rezolvă pachetele prin ir/uvr.

render dir=invocation_directory():
    cd "{{ dir }}" && Rscript render.R

ir dir=invocation_directory():
    cd "{{ dir }}" && ir run render.R

uvr dir=invocation_directory():
    cd "{{ dir }}" && uvr run render.R

Pot pur și simplu să tastez just ir sau just uvr pentru a reda prelegerea/tutorialul dat indiferent de directorul în care mă aflu.

Bonus 1 – Exemplu de utilizare a unui document autonom Quarto ir

ir ne permite inteligent să definim alternativ dependențele din antetul YAML al unui document Quarto, sub un ir cheie. În acest caz, putem elimina pachetul quarto, deoarece am putea presupune că vom reda acest document făcând clic pe Face butonul din RStudio sau folosind quarto render ... în terminal.

---
title: My lecture/tutorial
ir:
  packages:
    - gtsummary
    - haven
    - tidyverse
    - VIM
    - knitr
---

Rest of Quarto document follows ...

Spune că acest document Quarto este tutorial.qmd l-am reda apoi cu

ir render tutorial.qmd

Mai multe detalii sunt oferite în documentele ir Quarto.

Bonus 2 – Faceți executabil scriptul R

Cu ambele
ir şi uvr (și într-adevăr
uv) putem face opțional redă.R executabil de script, să spunem redenumirea în simplu faceprin adăugarea shebang-ului relevant chiar în partea de sus a fișierului.

Pentru ir adaugam noi

#!/usr/bin/env -S ir run

iar pentru uvr adaugam noi

#!/usr/bin/env -S uvr run

Apoi facem scriptul executabil

chmod +x render

și rulați-l cu

./render

Rezumat

Am arătat cum să creez un script R autonom și, opțional, executabil, pentru a reda documente Quarto folosind motorul knitr care gestionează automat pachetele R necesare. Această funcționalitate este oferită atât de ir şi uvr Manageri de pachete R. Această abordare ar funcționa și pentru documentele RMarkdown (desigur că ar trebui să schimbați pachetul quarto cu pachetul rmarkdown din lista de dependențe).

Dominic Botezariu
Dominic Botezariuhttps://www.noobz.ro/
Creator de site și redactor-șef.

Cele mai noi știri

Pe același subiect

LĂSAȚI UN MESAJ

Vă rugăm să introduceți comentariul dvs.!
Introduceți aici numele dvs.