여러 파일을 읽기 위한 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.

관련 정보