Есть ли что-то вроде требований.txt для R?

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

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


person hans-t    schedule 13.08.2016    source источник
comment
Не могу сказать, о чем вы спрашиваете (и я еще не один из тех, кто против). Развертывание обычно выполняется с помощью пакета. Это может быть то, что находится в файле DESCRIPTION пакета или в вашем .Rprofile файле.   -  person IRTFM    schedule 13.08.2016
comment
попробуйте использовать packrat   -  person hrbrmstr    schedule 13.08.2016
comment
Функциональность @MrFlick в файле requirements.txt заключается в хранении всех пакетов, необходимых для проекта, в файле, чтобы вы могли загрузить их и избежать запуска сценария и получения Error in library(xxx) : there is no package called ‘xxx’.   -  person Giacomo    schedule 14.04.2018
comment
Моя попытка воспроизвести что-то вроде требований.txt для R: gist.github.com/cannin/6b8c68e7db19c4902459   -  person cannin    schedule 17.05.2018
comment
Интересно, предлагается ли функциональность требования.txt в Python или pip? Я думаю, что это последнее.   -  person ytu    schedule 10.06.2018


Ответы (1)


Согласно комментариям, вы можете посмотреть на сборку пакета и включить требования в файл 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, поэтому убедитесь, что вы отредактировали его для своих нужд.

person rosscova    schedule 13.08.2016
comment
В типичной американской манере я перепутал доменное расширение Австралии с Австрией и удивился, почему вы не скачиваете с ближайшего зеркала, тем более, что это центральное зеркало CRAN. - person shayaa; 13.08.2016
comment
install.packages, наверное, следует заменить на devtools::install_version, так как через requirements.txt можно не только установить нужные пакеты, но и конкретные их версии. - person ytu; 10.06.2018