[英]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
sudo R CMD INSTALL path/C50_0.1.0-16.tar.gz --library =/usr/lib/R/site-library
sudo R CMD INSTALL path/C50_0.1.0-16.tar.gz --library =/usr/local/lib/R/site-library
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.