2016-08-13 2 views
9

Есть ли такая функция, как requirements.txt в Python, где вы можете сохранить список пакетов, используемых в файле, и всякий раз, когда другие люди хотят запускать ваши программы и должны устанавливать зависимости, они могут просто сделать pip install -r requirements.txt.Есть ли что-то вроде требований.txt для R?

Я думаю, это очень помогает при развертывании сценария R в процессе производства. Если такой функции нет, как мне ее реплицировать?

+1

Какую «функциональность» вы имеете в виду? Что должен делать требования. Txt? – MrFlick

+1

Не могу сказать, что вы просите (и я еще не один из hte downvoters). Развертывание обычно выполняется с помощью пакета. Может быть то, что находится в файле DESCRIPTION пакета или в вашем файле '.Rprofile'. –

+2

попробуйте использовать 'packrat' – hrbrmstr

ответ

3

В соответствии с комментариями вы можете посмотреть, как создать пакет и включить требования в файл DESCRIPTION. Если вы говорите о том, чтобы поставить сценарий .R в «производство», вы можете сначала установить функцию, чтобы убедиться, что требуемые пакеты установлены. Вот что происходит по этим строкам, которые у меня есть в моем собственном пакете, и я могу позвонить pkgLoad(<list of packages>) в начале любого скрипта, чтобы убедиться, что пакеты установлены и загружены. Я включил список моих любимых пакетов, так что вызов pkgLoad() установок и загружает все мои обычные подозреваемые:

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) 
     ) 
    } 

} 

Примечание Я построил мой любимый CRAN зеркало в функцию, поэтому убедитесь, что вы редактируете, что для ваши собственные потребности.

+1

В типичной американской моде я смутил расширение домена Австралии для Австрии и задался вопросом, почему вы не загружались из ближайшего зеркала, тем более, что это центральное зеркало CRAN. – shayaa

Смежные вопросы