外側のループ:

外側のループ:

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

これにより、変数 $t が A に設定され、ループの残りのコマンドが実行され、$t が B に設定されて繰り返し実行されます。また、サブシェルを実行して A と B をエコーするという奇妙な方法で実行されます。単純な方法でもfor t in A B ; do同じことが行われます。


次に、内側のループです。

seq 1 22 ; echo X

seqはシーケンス1から22までの数字の組み合わせ。バツが追加されます。より長い形式で書くと、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) で、ホームの UNIX ショートカット ( ~) は %HOMEPATH% に置き換えられています。最後の行はおそらく C:/users/your_username に展開され、バッチ ファイルに必要な 2 つの % 記号でカプセル化しました。

Windows スクリプトは私の得意分野ではないので、その部分は他の投稿者に任せます。

関連情報