여러 파일을 읽기 위한 Bash 스크립트

여러 파일을 읽기 위한 Bash 스크립트

읽을 R 스크립트가 여러 개 있습니다(최대 3개, 즉 tr1.R, tr2.R, tr3.R).
단일 스크립트를 읽기 위한 bash 스크립트는 다음과 같습니다.

#!/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

나는 제안한대로 다음을 시도했습니다.@카스

#!/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**

또한 작업은 다음을 사용하여 제출됩니다.

for i in {1..3} ; do
  qsub -o "default.$i.out" -e "errorfile$i" -v i script.sh
done

읽을 수 없습니다.Rscript ~/tr"$i".R.

답변1

이것은 빠르고 지저분합니다.

#!/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

답변2

R에서 이 문제를 이렇게 해결하면 어떨까요?

결합.R:

source (tr1.R)
source (tr2.R)
source (tr3.R)

아니면 이렇게.

결합.R:

for (i in c(1:9)) {
    filename <- paste ("tr", i, ".R", sep="")
    if (file.exists (filename)) {
        source (filename)
    }
}

그런 다음 다음을 로드할 수 있습니다 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

아, 이제 작업을 병렬로 실행하고 싶다는 것을 알겠습니다. 제가 게시한 솔루션은 작업을 병렬로 실행하지 않지만 이에 대한 답변은 여기에 남겨 두겠습니다. 어쩌면 누군가가 유용하다고 생각할 수도 있습니다. 어쩌면 이런 식으로 적용할 수도 있겠네요https://www.blasbenito.com/post/02_parallelizing_loops_with_r/아니면 이거https://stackoverflow.com/questions/38318139/run-a-for-loop-in-parallel-in-r.

관련 정보