我有多个 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
我按照建议尝试了以下操作@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**
此外,作业是使用提交的
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。