
읽을 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.