外循環:

外循環:

我有一個分析要在 skatMeta (R 套件)中運行。我收到一個要求運行分析的runscript.sh訊息。myfile.R不過,該腳本是為Linux編寫的,但我只有Windows。我安裝了 Cygwin,但現在不知​​道如何運行它。 runscript.sh 是:

for t in `echo A B` ; do 
  for i in `seq 1 22 ; echo X` ; 
  do 
       qth "export R_LIBS=~/lib/ ; 
       R --vanilla --args phenotype=$t chr=$i < ~/bin/skat.R" ;
  done ;
done

有人可以向我解釋我該做什麼嗎?我很困惑我應該做什麼:這些文件應該位於哪裡,如果我為 Windows 安裝了 R 和 skatMeta 可以嗎,..我什至不知道如何從 cmd 運行它。請盡可能清楚和簡單地解釋它,因為我對這些事情一無所知(對傻瓜的解釋)。

答案1

首先,讓我們看看這個腳本實際上做了什麼:


外循環:

for t in `echo A B` ; do
(removed for clarity)      
done

for t in A B ; do這將變數 $t 設為 A,執行循環中的其餘命令,然後將 $t 設為 B 來重複它。做了同樣的事。


接下來是內循環。

seq 1 22 ; echo X

seq 建立一個序列從 1 到 22 的數字的影響。X被添加。你可以把它寫成更長的形式for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 X


最後,命令:

將其添加到內部程式碼中,您將得到以下命令:

 qth "export R_LIBS=~/lib/ ;  
 R --vanilla --args phenotype=A chr=1 < ~/bin/skat.R" ;  
 qth "export R_LIBS=~/lib/ ;   
 R --vanilla --args phenotype=A chr=2 < ~/bin/skat.R" ;  
 qth "export R_LIBS=~/lib/ ;   
 R --vanilla --args phenotype=A chr=3 < ~/bin/skat.R" ;  
 ...   
 qth "export R_LIBS=~/lib/ ;   
 R --vanilla --args phenotype=A chr=19 < ~/bin/skat.R" ;  
 qth "export R_LIBS=~/lib/ ;   
 R --vanilla --args phenotype=A chr=20 < ~/bin/skat.R" ;  
 qth "export R_LIBS=~/lib/ ;   
 R --vanilla --args phenotype=A chr=X < ~/bin/skat.R" ;  
 qth "export R_LIBS=~/lib/ ;  
 R --vanilla --args phenotype=B chr=1 < ~/bin/skat.R" ;  
 qth "export R_LIBS=~/lib/ ;   
 R --vanilla --args phenotype=B chr=2 < ~/bin/skat.R" ;  
 qth "export R_LIBS=~/lib/ ;   
 R --vanilla --args phenotype=B chr=3 < ~/bin/skat.R" ;  
 ...   
 qth "export R_LIBS=~/lib/ ;   
 R --vanilla --args phenotype=B chr=19 < ~/bin/skat.R" ;  
 qth "export R_LIBS=~/lib/ ;   
 R --vanilla --args phenotype=B chr=20 < ~/bin/skat.R" ;  
 qth "export R_LIBS=~/lib/ ;   
 R --vanilla --args phenotype=B chr=X < ~/bin/skat.R" ;  


現在我們知道它的作用了,您可以手動運行它、編寫批次檔或 powershell 腳本。 :-)

它可能會包含這樣的內容:

C:\program files\SkatMeta\R.exe --vanilla --args phenotype=A chr=1 < %%HOMEPATH%%\bin\skat.R" 
C:\program files\SkatMeta\R.exe --vanilla --args phenotype=A chr=2 < %%HOMEPATH%%\bin\skat.R"  
C:\program files\SkatMeta\R.exe --vanilla --args phenotype=A chr=3 < %%HOMEPATH%%\bin\skat.R" 

Etc etc with chr is 4 5 6 7 8 ... 21 22 X
And then the same for B

其中第一行是 R 二進位檔案的完整路徑(Windows 上預設為 C:\program files\name_of_the_manufacturer\program_name.exe),並且 home 的 unix 捷徑 ( ~) 已被 %HOMEPATH% 取代。最後一個可能擴展到 C:/users/your_username ,我將其封裝在批次檔所需的雙 % 符號中。

我將把這部分留給另一位海報,因為 Windows 腳本編寫不是我的強項。

相關內容