
Ich muss mehrere R-Skripte lesen (bis zu 3, d. h. tr1.R, tr2.R, tr3.R).
Das Bash-Skript zum Lesen eines einzelnen Skripts finden Sie unten
#!/bin/bash
#PBS -l nodes=1:ppn=10,walltime=00:05:00
#PBS -M
#PBS -m e
module load R/4.0
Rscript ~/tr1.R
Ich habe Folgendes versucht, wie vorgeschlagen von@cas
#!/bin/bash
#PBS -l nodes=1:ppn=10,walltime=00:05:00
#PBS -M
#PBS -m e
module load R/4.0
**Rscript ~/tr"$i".R**
Der Auftrag wird übermittelt mit
for i in {1..3} ; do
qsub -o "default.$i.out" -e "errorfile$i" -v i script.sh
done
Dies konnte nicht gelesen werdenRscript ~/tr"$i".R.
Antwort1
Das ist schnell und schmutzig:
#!/bin/bash
echo -e "Printing script.......\n"
y=0
for (( y=0; y <= 9; y++ ))
do
echo "file tr$y.R contents: "
cat tr$y.R
echo ""
done
Antwort2
Wie wäre es, das in R so zu lösen,
kombiniert.R:
source (tr1.R)
source (tr2.R)
source (tr3.R)
oder so.
kombiniert.R:
for (i in c(1:9)) {
filename <- paste ("tr", i, ".R", sep="")
if (file.exists (filename)) {
source (filename)
}
}
Und dann können Sie laden combined.R
:
#!/bin/bash
#PBS -l nodes=1:ppn=10,walltime=00:05:00
#PBS -M
#PBS -m e
module load R/4.0
Rscript ~/combined.R
Oh, ich sehe jetzt, dass Sie Jobs parallel ausführen möchten. Die Lösung, die ich gepostet habe, führt Jobs nicht parallel aus, aber ich werde die Antwort hier lassen. Vielleicht findet sie jemand nützlich. Vielleicht können Sie so etwas anwendenhttps://www.blasbenito.com/post/02_parallelizing_loops_with_r/oder dieseshttps://stackoverflow.com/questions/38318139/führen Sie eine For-Schleife parallel in r aus.