Внешний цикл:

Внешний цикл:

У меня есть анализ для запуска в 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

Может кто-нибудь объяснить, что мне делать? Я совсем запутался, что мне делать: где должны находиться эти файлы, нормально ли, что у меня установлены R и skatMeta для Windows,.. Я даже не знаю, как запустить его из 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 для home ( ~) был заменен на %HOMEPATH%. Последняя строка, вероятно, расширяется до C:/users/your_username, и я заключил его в двойные знаки %, которые необходимы для пакетного файла.

Я оставлю эту часть другому автору, поскольку написание сценариев для Windows — не мой конек.

Связанный контент