Dies ist eine Möglichkeit, es zu tun , aber es gibt sicherlich andere gute Alternativen. Ein einfacher Weg, einen Verweis auf alle Pakete zu bekommen ist mit ìnstalled.packages()
. Wenn Sie mehrere Bibliotheken und Interpreter zum Trennen von Projekten haben, können Sie den Bibliotheksspeicherort für jedes Projekt mit lib.loc
angeben. Dadurch erhalten Sie Matrizen mit Paketen und deren Informationen. Eine der Spalten ist "Priorität". Basispakete setzen dies auf "empfohlen" oder "Basis". Wenn Sie anfangen, "meins" oder etwas ähnliches zu Ihrem eigenen hinzuzufügen, ist das ein einfacher Weg, Ihre eigenen Pakete herauszufiltern.
Holen Sie die Matrix aus jeder Bibliothek, die Sie haben, indem Sie Ihre Bibliothekspfade angeben.
Um Ihre eigenen Pakete zu finden, entfernen Sie die Liste der Pakete von den Repositories, die Sie normalerweise verwenden, z. für Kran mypkgs <- setdiff(installed.packages()[,1], available.packages()[,1])
. Dann subtrahieren Sie die Basispakete, mypkgs <- setdiff(mypkgs, basePkgs)
. basePkgs stammt von miniCran und Filter basierend auf Priorität wie oben erwähnt. Sie sollten dann eine Liste der Pakete haben, die Sie selbst erstellt haben.
Dann verwenden Sie makeDepGraph von miniCran. Es enthält den Paketnamen und Informationen zu Abhängigkeiten. Sie können es mit installed.packages bereitstellen, oder wenn Sie mehrere Bibliotheken haben, reduzieren Sie einfach die Matrizen mit rbind und entfernen Sie die Duplikate. Dann plotten Sie es mit Handlung.
Wenn Sie nur die Abhängigkeiten zwischen Ihren eigenen Paketen sehen möchten, filtern Sie die anderen Pakete wie oben und liefern Sie diese zu makeDepGraph.
Ein Beispiel: Ich habe eine Basisinstallation für verschiedene R-Sachen und eine andere Bibliothek für ein aktuelles Projekt mit einem isolierten Interpreter. Hier ist ein Beispiel mit dem Paket "flowCore" (nicht von mir geschrieben). Es stammt vom Repository des Bioconductors. Aus Gründen der Argumentation subtrahiere ich keine Bioconductor-Pakete und gehe davon aus, dass dies meine sind, um Ihre Frage besser zu beantworten.
require("miniCRAN")
#get package info
inst<-installed.packages()
other_inst<-installed.packages("/Users/lovetatting/Desktop/flowproj/lib/R-3.3.0/library")
cran<-available.packages()
#pick out your own packages
mypkgs<-lapply(list(inst, other_inst), function(inst){
mine<-setdiff(
setdiff(
inst[,1], cran[,1]),
basePkgs())
})
#aggregate
mypkgs<-Reduce(union, mypkgs)
allpkgs<-Reduce(rbind, list(inst, other_inst))
plot(makeDepGraph("flowCore", allpkgs, suggests=F))
Diese im Abhängigkeitsgraphen führen unter
Wenn Sie speziellere Anforderungen an der Nachverfolgung von Abhängigkeiten haben, können Sie immer mit der Info Form installed.packages rumspielen. Für die Paketentwicklung habe ich selbst eine kleine Bibliothek von Bash-Funktionen, hauptsächlich Wrapper um Aufrufe für R CMD ... und Devtools. Aber auch um Ärger wie die Einschränkung der Ordnerhierarchie im R-Ordner zu beheben (ich bündle alles und installiere das).
Wenn Sie eine Tabelle aller abhängigen Pakete haben möchten, steht Ihnen hier ein Code-Snippet zur Verfügung: https://github.com/aryoda/R_pkg_dependencies –