複数のファイルを読み取るための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でこのように解決してみてはいかがでしょうか?

組み合わせ。

source (tr1.R)
source (tr2.R)
source (tr3.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

関連情報