Wie zu sagen, welche Pakete Sie verwendet haben, in der R
Ich habe eine sehr lange R-Skript mit vielen if-Anweisungen und exception-Fälle. Als ich schon gehen, wenn, einspielen und testen der Bibliotheken, die ich besucht habe und noch nicht wirklich dokumentiert Sie sehr gut. Das problem ist, dass wenn ich dieses aus eine saubere installation, ich bin mir nicht sicher, welche Aussagen das Skript ausgeführt wird, und damit, welche Bibliotheken benötigt werden.
Meine Frage ist: gibt es eine R-Funktion zu testen, welche Bibliotheken verwendet werden, die in einem Skript?
EDIT: ich habe nicht alle von den Bibliotheken, die installiert wurden, so print(sessionInfo())
nicht nützlich aber, und ich will gerade starten Sie das Skript mit einem install.packages
Funktion
- dies ist, was Sie suchen
- das ist nicht wirklich das, was er verlangt
- Ich glaube, Sie suchen nach einer spading/Kastration tool von Autor(en) des Skripts. Ich glaube, du bist dazu verdammt, auf dem das Skript läuft und die Installation von Paketen, wie Sie gehen, um herauszufinden, welche Funktion kommt aus dem Paket. Viel Glück mit dem gleichen Namen und Funktionen, die über verschiedene Pakete (dies ist, wo das tool kommt praktisch). Ich finde
library("sos");findFn("foo")
praktisch zum nachschlagen von Funktionen. - tut mir Leid mein schlechtes
- keine Sorge, es kann tatsächlich einen nützlichen link, wie gut!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fand ich die
list.functions.in.file()
Funktion von NCmisc (install.packages("NCmisc")
) sehr hilfreich für diese:list.functions.in.file(filename, alphabetic = TRUE)
Weitere Infos finden Sie unter diesem link: https://rdrr.io/cran/NCmisc/man/list.functions.in.file.html
Ich bin nicht sicher, ob eine gute Art und Weise zu automatisieren... aber was Sie tun können, ist:
Check mit
sessionInfo
dass Sie müssen nicht zusätzliche Pakete geladen.Du könntest dies überprüfen, mithilfe
sessionInfo
. Wenn Sie standardmäßig das laden von zusätzlichen Paketen (z.B. über Ihre .RProfile-Datei) ich schlage vor, Sie vermeiden tun, es ist ein Rezept für eine Katastrophe.Normalerweise sollten Sie nur die Basis-Pakete sind geladen:
stats
,graphics
,grDevices
,utils
,datasets
,methods
, undbase
.Können Sie entladen irgendwelche zusätzlichen Bibliotheken mit:
Führen Sie nun das Skript nach kommentieren der
library
undrequire
anrufen und sehen, welche Funktionen geben einen Fehler aus.Zu bekommen, welches Paket benötigt wird, durch jede Funktion geben in der Konsole ein:
Laden Sie die gewünschten Pakete und re-führen Sie die Schritte 3-5, bis zufrieden.
Habe ich zuvor verwendet ein shell-Skript für diese:
Diese Git benutzt, um zu sammeln alle R-Dateien unter Versionskontrolle in ein Projekt. Da Sie sollten mit version control sowieso das ist in der Regel eine gute Lösung (auch wenn Sie vielleicht anpassen möchten, die version control system). Für die wenigen Fälle, in denen das Projekt nicht unter Versionskontrolle, sollten Sie (1) stellt Sie unter Versionskontrolle. Oder in Ermangelung eines solchen, (2)
find . -regex '.*\.[rR]'
stattgit ls-files '*.R'
.Und es entsteht ein
HÄNGT
- Datei mit einer sehr einfachen Liste von Abhängigkeiten.Es findet nur direkte Aufrufe
library
undrequire
aber – wenn Sie wickeln diese Aufrufe, wird das Skript nicht funktionieren.[\.a-ZA-Z0-9]
statt\w
und[[:alnum:]]
Sie erfassen alle gültigen R-Paket-Namen.Basierend auf jeder Antwort, vor allem eh21's Vorschlag der NCmisc Paket, ich zusammen eine kleine Funktion gibt eine Liste der Pakete in alle R-Skripte in einem Verzeichnis, sowie Ihrer Frequenzen.
lapply(.packages(all.available = TRUE), function(xx) library(xx, character.only = TRUE))
Vielleicht möchten Sie sich an der checkpoint-Funktion von Revolution Analytics ist auf GitHub hier: https://github.com/RevolutionAnalytics/checkpoint
Es einige dieser macht, und löst das problem der Reproduzierbarkeit. Aber ich glaube nicht, dass es eine Liste von was Sie verwenden.
Wenn Sie jedoch sah der code, den Sie wahrscheinlich einige Ideen.
Ich hatte ein ähnliches brauchen, wenn ich brauchte, um meine konvertieren-code in ein Paket, so muss ich erkennen jedes Paket Abhängigkeit und entweder import oder die Verwendung voll Qualifizierter name.
In ein Buch liest
Extending R
fand ichXRtools::makeImports
können scan ein Paket und alle Pakete müssen importiert werden. Dies löst nicht unser problem noch, da es nur für das vorhandene Paket, aber es ist die wichtigste Einsicht auf, wie es zu tun.Ich habe eine Funktion und legen Sie es in mein Paket
mischelper
. Sie können das Paket installieren, verwenden Sie entweder die RStudio-add-in-Menü scan aktuelle Datei oder den ausgewählten code, oder verwenden Sie command line Funktionen. Jede externe Funktion (fun_inside), und die Funktion, die es aufgerufen (Nutzung) werden aufgeführt in der Tabelle.Gehen Sie jetzt auf jede Funktion, drücken Sie F1, um herauszufinden, welches Paket es gehört. Ich habe eigentlich ein anderes Paket, das scan alle installierten Pakete für function-Namen und bauen eine Datenbank, aber das kann zu mehr false positives für diese Verwendung, denn wenn Sie erst einige Pakete geladen, drücken Sie F1 auf der Suche nach geladenen Pakete.
Sehen Sie die details der Nutzung meiner Seite Paket
https://github.com/dracodoc/mischelper