2016-08-13 5 views
9

Gibt es eine Funktionalität wie requirements.txt in Python, wo Sie eine Liste der verwendeten Pakete in einer Datei speichern können, und wenn andere Leute Ihre Programme ausführen wollen und die Abhängigkeiten installieren müssen, können sie einfach pip install -r requirements.txt tun.Gibt es sowas wie requirements.txt für R?

Ich denke, das hilft viel bei der Bereitstellung von R-Skript in die Produktion. Wenn es keine solche Funktionalität gibt, wie repliziere ich sie?

+1

Auf welche "Funktionalität" beziehen Sie sich genau? Was soll die requirements.txt tun? – MrFlick

+1

Kann nicht sagen, was Sie fragen (und ich bin noch keiner von den Downvotern). Die Bereitstellung erfolgt normalerweise mit einem Paket. Könnte sein, was in einem Paket BESCHREIBUNG Datei oder was ist in Ihrer '.Rprofile' Datei. –

+2

versuche 'packrat' zu verwenden – hrbrmstr

Antwort

3

Gemäß den Kommentaren möchten Sie möglicherweise ein Paket erstellen und die Anforderungen in der Datei DESCRIPTION einschließen. Wenn Sie davon sprechen, ein .R-Skript in Produktion zu nehmen, können Sie am Anfang eine Funktion einfügen, um sicherzustellen, dass die erforderlichen Pakete installiert sind. Hier ist etwas, das ich in meinem eigenen Paket habe, und ich kann pkgLoad(<list of packages>) am Anfang jedes Skripts aufrufen, um sicherzustellen, dass die Pakete installiert und geladen werden. Ich schließe eine Liste meiner Lieblingspakete, so dass ein Anruf von pkgLoad() installiert und lädt alle meine üblichen Verdächtigen:

pkgLoad <- function(packages = "favourites") { 

    if(length(packages) == 1L && packages == "favourites") { 
     packages <- c("data.table", "chron", "plyr", "dplyr", "shiny", 
         "shinyjs", "parallel", "devtools", "doMC", "utils", 
         "stats", "microbenchmark", "ggplot2", "readxl", 
         "feather", "googlesheets", "readr", "DT", "knitr", 
         "rmarkdown", "Rcpp" 
     ) 
    } 

    packagecheck <- match(packages, utils::installed.packages()[,1]) 

    packagestoinstall <- packages[ is.na(packagecheck) ] 

    if(length(packagestoinstall) > 0L) { 
     utils::install.packages(packagestoinstall, 
          repos = "http://cran.csiro.au" 
     ) 
    } else { 
     print("All requested packages already installed") 
    } 

    for(package in packages) { 
     suppressPackageStartupMessages(
      library(package, character.only = TRUE, quietly = TRUE) 
     ) 
    } 

} 

Hinweis Ich habe meine Lieblings CRAN Spiegel in die Funktion eingebaut, so stellen Sie sicher, dass bearbeiten für deine eigenen Bedürfnisse.

+1

Auf typisch amerikanische Art und Weise verwechselte ich die Domain-Erweiterung von Australien mit Österreich und fragte mich, warum Sie nicht aus dem nächsten Spiegel heruntergeladen haben, besonders da es CRANs zentraler Spiegel ist. – shayaa

Verwandte Themen