外循环:

外循环:

我有一个要在 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。它还以一种奇怪的方式执行子 shell 来回显 A 和 B。简单的操作for t in A B ; do也会做同样的事情。


接下来是内循环。

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 脚本不是我的强项。

相关内容