2012-11-05 53 views
4

我想在Windows 7上安裝R 2.15.1的腳本。R安裝得很好,但我無法弄清楚如何從同一批處理腳本安裝多個包(或任何批處理腳本)。以下是我稱之爲簡單R文件的腳本部分。Windows 7:通過腳本安裝多個R包

"%ProgramFiles%\R\R-2.15.1\bin\R.exe" CMD BATCH "%~dp0R packages for GME.R" 

這裏是「R包GME.R」的內容,它具有要安裝的軟件包。

install.packages("CircStats","coda","deldir","gplots","igraph","ks","odesolve","RandomFields",dep=TRUE) 

鑑於documented ownership and ACLs issues with writing to the default library folder in Windows,我已經試過以下內容:

  1. 取得所有權 「C:\ Program Files文件\ r \ R-2.15.1 \庫」,然後運行R CMD BATCH <file>(無變化);
  2. 將「完全控制」權限授予我在同一文件夾中的用戶帳戶,然後運行R CMD BATCH <file>(不變);
  3. 通過Rprofile.site更改庫文件夾到另一個位置,然後運行R CMD BATCH <file>(無變化);
  4. 通過Rgui運行命令install.packages("CircStats","coda","deldir","gplots","igraph","ks","odesolve","RandomFields",dep=TRUE)(works)。

到目前爲止,我沒有運用CMD或批處理腳本來安裝軟件包。有什麼我失蹤?任何替代方法的腳本包安裝將不勝感激。

另外,我要安裝的機器是針對多個用戶的,因此係統範圍的安裝和配置是首選。

//

編輯2012年11月6日: 下面是來自.Rout文件中的錯誤消息:

install.packages("CircStats","coda","deldir","gplots","igraph","ks","odesolve","RandomFields",dep=TRUE) 
Warning in install.packages("CircStats", "coda", "deldir", "gplots", "igraph", : 
    'lib = "coda"' is not writable 
Error in install.packages("CircStats", "coda", "deldir", "gplots", "igraph", : 
    unable to install packages 
Execution halted 

如果我執行library(coda)之後,它給Error in library(coda) : there is no package called ‘coda’

+0

當您通過命令行執行操作時,它不工作嗎?它給你一個錯誤?它告訴你它已經成功了,但是當你啓動R和'library(CircStats)'時,它說它沒有安裝?如果你得到某種錯誤信息,什麼錯誤? –

+1

我想你忘了在'c()'中包裝你的包名列表。嘗試'install.packages(c(「CircStats」,「coda」,「deldir」,「gplots」,「igraph」,「ks」,「odesolve」,「RandomFields」),dep = TRUE)' – Andrie

+0

我添加了錯誤消息從.Rout到上面的原始問題。看起來R在以這種方式調用'install.packages()'時不能寫入庫。 –

回答

8

odesolve包已折舊並已由deSolve取代。 R 2.15.1在遇到這個包時會拋出一個錯誤。這可能會對您造成問題。以下是我用於安裝新R安裝包的腳本。

libs=c("CircStats","coda","deldir","gplots","igraph","ks","odesolve‌​","RandomFields") 
type=getOption("pkgType")       
    CheckInstallPackage <- function(packages, repos="http://cran.r-project.org", 
     depend=c("Depends", "Imports", "LinkingTo", "Suggests", "Enhances"), ...) { 
     installed=as.data.frame(installed.packages()) 
    for(p in packages) { 
     if(is.na(charmatch(p, installed[,1]))) { 
      install.packages(p, repos=repos, dependencies=depend, ...) 
        } 
     } 
    } 
    CheckInstallPackage(packages=libs) 
+0

完美!當從上面的批處理腳本調用時('R CMD BATCH '),它的工作效果非常好。第2行有一個小的語法錯誤:'type = getOption(「pkgType」))'應該是'type = getOption(「pkgType」)'(單括號)。 –

+0

感謝您指出錯誤,將其修正在帖子中。 –

+0

在這裏深思熟慮的r實用程序代碼。謝謝 – javadba