O circuito externo:

O circuito externo:

Tenho uma análise para rodar no skatMeta (pacote R). Recebi uma runscript.shchamada myfile.Rpara fazer a análise. No entanto, o script foi escrito para Linux, mas só tenho Windows. Instalei o Cygwin, mas agora não tenho ideia de como executá-lo. O 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

Alguém pode me explicar o que devo fazer? Estou confuso sobre o que devo fazer: onde esses arquivos devem estar localizados, tudo bem se eu tiver R e skatMeta instalados para Windows, ... nem sei como executá-lo no cmd. E por favor, explique da forma mais clara e simples possível, pois não tenho ideia dessas coisas (uma explicação para manequins).

Responder1

Primeiro, vamos ver o que o script realmente faz:


O circuito externo:

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

Isso define a variável $t como A, executa o restante dos comandos no loop e depois o repete com $t definido como B. Ele também faz isso de uma maneira estranha ao executar um subshell para ecoar A e B. Um simples for t in A B ; doseria fizeram o mesmo.


A seguir, o loop interno.

seq 1 22 ; echo X

seq cria umsequênciafluência dos números de 1 a 22. EntãoXEstá adicionado. Você escreveria em uma forma mais longa comofor 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


Por fim, os comandos:

Adicione isso ao código interno e você obterá estes comandos:

 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" ;  


Agora que sabemos o que isso faz, você pode executá-lo manualmente, escrever um arquivo em lote ou um script do PowerShell. :-)

Provavelmente conteria algo assim:

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

Onde a primeira linha é o caminho completo para o binário R (o padrão no Windows é C:\program files\name_of_the_manufacturer\program_name.exe) e onde o atalho unix para home ( ~) foi substituído por %HOMEPATH%. O último provavelmente se expande para C:/users/your_username e eu o encapsulei em sinais % duplos, necessários para um arquivo em lote.

Vou deixar essa parte para outro postador, já que scripts do Windows não são meu forte.

informação relacionada