2016-08-13 19 views
9

Có chức năng như requirements.txt trong Python, nơi bạn có thể lưu trữ danh sách gói được sử dụng vào tệp và bất cứ khi nào người khác muốn chạy chương trình của bạn và cần cài đặt phụ thuộc, họ chỉ có thể thực hiện pip install -r requirements.txt.Có thứ gì đó như requirements.txt cho R không?

Tôi nghĩ, điều này giúp ích rất nhiều khi triển khai tập lệnh R vào sản xuất. Nếu không có chức năng như vậy, làm thế nào để tái tạo nó?

+1

"Chức năng" nào bạn đề cập chính xác? Requirements.txt phải làm gì? – MrFlick

+1

Không thể cho biết bạn đang hỏi gì (và tôi chưa phải là một trong số các nhân viên nâng cấp của hte). Triển khai thường được thực hiện với một gói. Có thể là những gì trong một gói MÔ TẢ tệp hoặc những gì có trong tệp '.Rprofile' của bạn. –

+2

thử sử dụng 'packrat' – hrbrmstr

Trả lời

3

Theo nhận xét, bạn có thể muốn xem xét việc xây dựng một gói và bao gồm các yêu cầu trong tệp DESCRIPTION. Nếu bạn đang nói về việc đặt một kịch bản .R "vào sản xuất", bạn có thể đặt một hàm lúc bắt đầu để đảm bảo các gói yêu cầu được cài đặt. Đây là một cái gì đó dọc theo những dòng mà tôi có trong gói của riêng tôi, và tôi có thể gọi pkgLoad(<list of packages>) ở đầu của bất kỳ kịch bản để đảm bảo các gói được cài đặt và tải. Tôi bao gồm một danh sách các gói yêu thích của tôi, như vậy mà một tiếng gọi của pkgLoad() cài đặt và tải tất cả các nghi phạm thông thường của tôi:

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

} 

Lưu ý tôi đã xây dựng yêu thích gương cran tôi vào chức năng, do đó hãy chắc chắn rằng bạn chỉnh sửa mà cho nhu cầu của riêng bạn.

+1

Trong thời trang điển hình của Mỹ, tôi nhầm lẫn phần mở rộng tên miền của Úc cho Áo, và tự hỏi tại sao bạn không tải xuống từ gương gần nhất, đặc biệt vì nó là gương trung tâm của CRAN. – shayaa

Các vấn đề liên quan