簡體   English   中英

從Web Interface自動安裝R軟件包

[英]Install R packages automatically from webinterface

為了提供一種使用更多軟件包擴展我的Web應用程序的簡便方法,我開始考慮通過R軟件包的文件鏈接自動安裝R軟件包。

為了簡單起見,假設我有一個輸入字段和一個按鈕。 輸入字段中包含指向軟件包源的鏈接(例如, http : //cran.r-project.org/src/contrib/C50_0.1.0-16.tar.gz )。 按下按鈕后,應下載並安裝軟件包。

我找到了所需的命令:

  • 下載: wget http://cran.r-project.org/src/contrib/C50_0.1.0-16.tar.gz
  • 安裝1: sudo R CMD INSTALL path/C50_0.1.0-16.tar.gz --library =/usr/lib/R/site-library
  • 安裝2: sudo R CMD INSTALL path/C50_0.1.0-16.tar.gz --library =/usr/local/lib/R/site-library
  • 安裝3: sudo R CMD INSTALL path/C50_0.1.0-16.tar.gz --library =/usr/lib/R/library

這些命令在哪里存儲以及如何調用腳本? (也許在PHP執行?)

sudo如何處理? 有沒有辦法通過Ajax等發送密碼或完全避免要求密碼?

你怎么看?

編輯(解決方案):

因為接下來的幾個小時無法回答自己的問題,所以我用最終的解決方案來編輯​​問題。

經過研究和您的提示,我最終得到了這段代碼(可在http://www.r-bloggers.com/installing-r-packages/中找到,並根據我的需要進行了自定義)

installPackage.html

<%
cat(".Rprofile: Setting UK repositoryn")
r = getOption("repos") # hard code the UK repo for CRAN
r["CRAN"] = "http://cran.uk.r-project.org"
options(repos = r)
rm(r)

install.packages("packageNameFromAjaxCall", lib="/usr/lib/R/site-library")
install.packages("packageNameFromAjaxCall", lib="/usr/local/lib/R/site-library")
install.packages("packageNameFromAjaxCall", lib="/usr/lib/R/library")
%>

用類似的東西打電話

$.post('path/brew/installPackage.html',{package:packageFromInput},function(){
...
})

我已經實現了用戶定義的功能,以靜默方式安裝和加載所需的R軟件包。 希望會有所幫助。 這是代碼:

# Function to Install and Load R Packages
Install_And_Load <- function(Required_Packages)
{
    Remaining_Packages <- Required_Packages[!(Required_Packages %in% installed.packages()[,"Package"])];

    if(length(Remaining_Packages)) 
    {
        install.packages(Remaining_Packages);
    }
    for(package_name in Required_Packages)
    {
        library(package_name,character.only=TRUE,quietly=TRUE);
    }
}

# Specify the list of required packages to be installed and load    
Required_Packages=c("ggplot2", "Rcpp");

# Call the Function
Install_And_Load(Required_Packages);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM