como chamar o script .R usando .sh no windows

0

Eu tenho uma análise para executar no skatMeta (pacote R). Recebi um runscript.sh que chama myfile.R para executar a análise. No entanto, o script é escrito para o Linux, mas eu só tenho o Windows. Eu 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 com o que devo fazer: onde esses arquivos devem ser localizados, está tudo bem se eu tenho o R e o skatMeta instalados para o Windows, .. Eu nem sei como rodá-lo a partir do cmd. E por favor, explique o mais claro e simples possível, pois não tenho idéia sobre essas coisas (uma explicação para manequins).

    
por user284087 23.12.2013 / 14:44

1 resposta

0

Primeiro, vamos ver o que o script realmente faz:


O loop externo:

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

Isto ajusta a variável $ t para A, executa o resto dos comandos no loop e então repete com $ t definido para B. Ele também faz isso de uma maneira estranha com a execução de um subshell para ecoar A e B. Um simples for t in A B ; do teria feito o mesmo.


Em seguida, o loop interno.

seq 1 22 ; echo X

seq cria uma seq de números de 1 a 22. Então X é adicionado. Você escreveria em um formato mais longo como 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


Finalmente, os comandos:

Adicione isto ao código interno e você recebe 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 você pode executar manualmente, escreva um lote ou um script 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 é Windows: C: \ arquivos de programas \ nome_do_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 de porcentagem dupla que são necessários para um arquivo em lote.

Eu deixarei essa parte para outro pôster, já que o script do Windows não é meu strong.

    
por 23.12.2013 / 16:19