
Ich muss eine Analyse in skatMeta (R-Paket) ausführen. Ich habe eine erhalten, runscript.sh
die zum Ausführen der Analyse aufruft myfile.R
. Das Skript ist jedoch für Linux geschrieben, ich habe aber nur Windows. Ich habe Cygwin installiert, weiß aber jetzt nicht, wie ich es ausführen soll. Die Datei runscript.sh lautet:
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
Kann mir jemand erklären, was ich tun soll? Ich bin völlig verwirrt und weiß nicht, wo diese Dateien liegen sollen. Ist es OK, wenn ich R und skatMeta für Windows installiert habe? Ich weiß nicht einmal, wie ich es von cmd aus ausführen kann. Und bitte erklären Sie es so klar und einfach wie möglich, da ich von diesen Dingen keine Ahnung habe (eine Erklärung für Dummies).
Antwort1
Schauen wir uns zunächst an, was das Skript eigentlich macht:
Die äußere Schleife:
for t in `echo A B` ; do
(removed for clarity)
done
Dadurch wird die Variable $t auf A gesetzt, der Rest der Befehle wird in der Schleife ausgeführt und dann wird dies mit $t auf B gesetzt wiederholt. Außerdem geschieht dies auf seltsame Weise durch die Ausführung einer Subshell, um A und B wiederzugeben. Eine einfache for t in A B ; do
würde dasselbe tun.
Als nächstes die innere Schleife.
seq 1 22 ; echo X
seq erzeugt eineFolgeEinfluß der Zahlen von 1 bis 22. DannXwird hinzugefügt. In einer längeren Form würde man es schreiben alsfor 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
Schließlich die Befehle:
Fügen Sie dies dem inneren Code hinzu und Sie erhalten diese Befehle:
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" ;
Nachdem wir nun wissen, was es tut, können Sie es entweder manuell ausführen, eine Batchdatei oder ein Powershell-Skript schreiben. :-)
Es würde wahrscheinlich ungefähr Folgendes enthalten:
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
Wobei die erste Zeile der vollständige Pfad zur R-Binärdatei ist (Standard unter Windows ist C:\Programme\Name_des_Herstellers\Programmname.exe) und wo die Unix-Verknüpfung für Home ( ~
) durch %HOMEPATH% ersetzt wurde. Die letzte Zeile wird wahrscheinlich zu C:/Benutzer/Ihr_Benutzername erweitert und ich habe sie in doppelte %-Zeichen gekapselt, was für eine Batchdatei erforderlich ist.
Diesen Teil überlasse ich einem anderen Poster, da Windows-Scripting überhaupt nicht meine Stärke ist.