(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
Sistemul R-universe al rOpenSci este o platformă open source care permite utilizatorilor să-și creeze propriul univers de pachete R asemănător CRAN.
Este greu de exagerat cât de util este acest lucru. Pentru prima dată, cercetătorii nu numai că au o listă a pachetelor de randomizare mendeliană într-un singur loc, dar pot instala fișiere binare – fără a fi nevoiți să treacă prin bătăi de cap – în special pe Linux (Ubuntu) – de remotes::install_github(). Cercetătorii pot vedea, de asemenea, cât de des sunt actualizate pachetele și R-universe verifică modificările în pachete aproximativ la fiecare oră, menținându-le mereu la zi.
Această postare oferă cinci sfaturi pe care le-am dezvoltat pentru a ajuta la gestionarea universului meu R.
Sfat 1: referire la un pachet dintr-o cerere de tragere în loc de la o ramură de pe o furcă
{
"package": "GWASBrewer",
"url": "https://github.com/jean997/GWASBrewer",
"branch": "refs/pull/18/head"
},
Trec înapoi la ramura implicită dacă PR-ul este fuzionat.
Sfat 2: Justfile rețetă pentru adăugarea unui pachet la packages.json
În mod regulat, constat că trebuie să adaug sau să elimin un pachet. Editarea manuală a packages.json fișierul nu este greu, dar am găsit următoarele rețete Justfile (doar este ca Make, dar special conceput pentru rularea comenzilor și are o sintaxă mult mai prietenoasă) utile pentru a face acest lucru rapid.
Aceste rețete necesită UV și doar să fie instalate și pe dvs PATH (uv instalează automat versiunea necesară de Python și creează/distruge/gestionează orice medii virtuale necesare). Pentru a le utiliza, copiați-le într-un fișier text numit justfile la nivelul superior al depozitului dvs. de registry R-universe și urmați instrucțiunile.
Această rețetă adaugă un pachet la dvs packages.json în ordine alfabetică. Are un argument obligatoriu și 3 argumente opționale.
# add a package entry to packages.json in alphabetical order
(arg("branch", short="b"))
(arg("pkgname", short="p"))
(arg("subdir", short="s"))
add url pkgname="" branch="" subdir="":
#!/usr/bin/env -S uv run --python 3.14 python3
import json, re, sys
url = "{{ url }}"
if re.fullmatch(r'(^/)+/(^/)+', url):
url = f"https://github.com/{url}"
pkgname = "{{ pkgname }}" or url.rstrip("/").split("/")(-1)
branch = "{{ branch }}"
subdir = "{{ subdir }}"
with open("packages.json") as f:
packages = json.load(f)
if any(p("package") == pkgname for p in packages):
print(f"Error: '{pkgname}' already exists in packages.json", file=sys.stderr)
sys.exit(1)
entry = {"package": pkgname, "url": url}
if branch:
entry("branch") = branch
if subdir:
entry("subdir") = subdir
packages.append(entry)
packages.sort(key=lambda p: p("package").lower())
with open("packages.json", "w") as f:
json.dump(packages, f, indent=2)
f.write("n")
print(f"Added {pkgname}")
just add username/reponame
Puteți inspecta argumentele și opțiunile rețetei cu
just --usage add Usage: just add (OPTIONS) url Arguments: url Options: -p pkgname (default: "") -b branch (default: "") -s subdir (default: "")
just add username/reponame -p pkgname
Sfat 3: Justfile rețetă pentru eliminarea unui pachet din packages.json
Această rețetă elimină un pachet din dvs packages.json.
# remove a package entry from packages.json
remove pkgname:
#!/usr/bin/env -S uv run --python 3.14 python3
import json, sys
pkgname = "{{ pkgname }}"
with open("packages.json") as f:
packages = json.load(f)
filtered = (p for p in packages if p("package") != pkgname)
if len(filtered) == len(packages):
print(f"Error: '{pkgname}' not found in packages.json", file=sys.stderr)
sys.exit(1)
with open("packages.json", "w") as f:
json.dump(filtered, f, indent=2)
f.write("n")
print(f"Removed {pkgname}")
Rulați-l cu
just remove pkgname
Sfat 4: Rețeta Justfile pentru verificarea packages.json este validă
Când editați manual packages.json este foarte ușor să uiți o virgulă sau să ratezi o paranteză de închidere sau ghilimele. Această rețetă verifică că JSON este valid.
# check packages.json
check:
uv run --python 3.14 -m json.tool packages.json > /dev/null && echo "JSON check passed"
Rulați-l cu
just check
Sfat 5: vizualizați convenabil dependențele unui pachet
Cunoașterea listei complete de dependențe puternice a unui pachet este utilă – de exemplu, atunci când o schimbare întreruptă undeva în lanț provoacă eșecuri neașteptate de construire. Deși există mai multe moduri de a determina acest lucru în R, R-universe vă arată imediat lista completă.
Navigați la pagina R-universe pentru pachetul care vă interesează, spuneți https://mrcieu.r-universe.dev/TwoSampleMR și faceți clic pe pilula de dependențe.

Se extinde arătând lista completă de dependențe.


Rezumat
Pe scurt, am arătat cinci sfaturi pe care le consider utile pentru a gestiona un univers R mare.
