web-dev-qa-db-ja.com

Rのrequirements.txtのようなものはありますか?

Pythonのrequirements.txtのような機能はありますか?そこでは、使用されるパッケージのリストをファイルに保存できます。他の人がプログラムを実行したい場合や依存関係をインストールする必要がある場合は、いつでもpip install -r requirements.txtを実行できます。

これは、Rスクリプトを本番環境にデプロイするときに非常に役立ちます。そのような機能がない場合、どのように複製できますか?

33
hans-t

コメントに従って、パッケージのビルドと、要件を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ミラーを関数に組み込んだので、自分のニーズに合わせて編集してください。

5
rosscova