Bash-Skript zum Lesen mehrerer Dateien

Bash-Skript zum Lesen mehrerer Dateien

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.

verwandte Informationen