2009-07-27 76 views
4

我知道我必須犯一個簡單的語法錯誤,但我想要一個Windows批處理文件,它啓動R的9個實例並在每個實例中運行不同的例程。我希望這些可以同時運行(即異步)。我可以啓動9個命令提示符窗口並在每一個命令窗口中輸入一個命令,但是看起來像使用START命令,我應該能夠使它們從一個批處理文件開始。使用開始命令讓窗口在批處理模式下啓動R

這裏是我如何開始R的情況下的一個例子:

"C:\Program Files (x86)\R\R-2.8.1\bin\R" CMD BATCH "C:\Users\jd\Documents\mexico\Estado\getdata1.r" 

閱讀本previous stackoverflow questionthis previous question一起讓我覺得我應該能夠做到這一點:

START "" "C:\Program Files (x86)\R\R-2.8.1\bin\R" CMD BATCH "C:\Users\jd\Documents\mexico\Estado\getdata1.r" /b 

那不返回錯誤,它只是返回一個提示符,R從不開始。我錯過了什麼?

+0

是「/ B」爲START命令的參數?我認爲它傳遞給了R程序。嘗試將其更改爲START/b ....但我不確定這是否真的解釋了問題(R從不開始)。 – ars 2009-07-27 17:01:32

+0

您解決了這個問題嗎?@JD? – 2011-07-16 14:49:40

+0

@羅曼,我結束了構建賽格:)如果我今天嘗試解決同樣的問題,我會使用多核或doRedis。 – 2011-07-18 14:27:48

回答

4

簡單的答案。在運行命令的窗口上使用「Rcmd」而不是「R CMD」。有一個單獨的exe文件來運行命令。查看R安裝的bin文件夾。

5

我會做兩分不同的事情:

  1. 使用[R本身派遣九個不同的工作;即使不使用MPI/PVM/NWS進行分佈式工作,snow軟件包也非常擅長。例如,在我的'高性能計算R'教程鏈接從this page的介紹。有了雪,你就可以獲得應用函數的'並行'版本,你可以在本地計算機上運行的R的多個實例上運行(或者當然也可以是一臺計算機,如果有的話)。 r-sig-hpc列表對更詳細的問題有幫助。

  2. 切換到使用Rscript.exe而不是使用'R CMD BATCH'。在Linux/OS X您還可以獲得使用利特勒

不過的選擇,我跑我幾乎所有的Linux上工作,這樣有可能在此特定的Windows的答案太,我只是不知道。但以上是通用的,並保持R的平臺不可知論的精神。

1

這是不是從其他的答案如何真正使這項工作(而不是訴諸並行處理方案立即清除,所以這裏我找到了一個解決方案,如果你有一個簡易R是非常簡單的工作在Windows

文件:

for(i in 1:10){ 
    ptm0 <- proc.time() 
    Sys.sleep(0.5) 
    ptm1=proc.time() - ptm0 
    jnk=as.numeric(ptm1[3]) 
    cat('\n','It took ', jnk, "seconds to do iteration", i) 
} 

在CMD,指定其中你的腳本所在的目錄,然後啓動一個新的窗口,RSCRIPT運行你的多行代碼將打開運行代碼,多個存在的R實例也重現的消息說代碼輸出。

cd "C:\rcode" 
START "" Rscript example_code.r /b 
START "" Rscript example_code.r /b 

如果RSCRIPT不在系統路徑上,只指定完整路徑,而不是:

START "" "C:\Program Files\R\bin\x64\Rscript.exe" text_within_loop.r /b 
相關問題