Мне нравится вызывать команду OS (запуск файла оболочки в linux) в коде R и отправлять вместе аргумент, полученный в коде R.Например, MyRcode.R выполнит некоторые вычисления и получит векторный вывод.Затем MyRcode.R будет использовать цикл for для запуска файла оболочки и отправки каждого элемента в векторе.Вот простой пример кода.
[MyRcode.R]
############################################
### Some calculation to get myVector ######
.
.
############################################
print(myVector) # [1] 3 5 7
for (argument in myVector) {
system("./Shell_RunCalculations.sh argument")
}
[Shell_RunCalculations.sh]
#!/bin/bash
module load R/3.5.1-gcc5.2.0
echo "argument: " $1
Rscript --vanilla RunCalculation.R $1
[RunCalculation.R]
### This is very complex calculation which should run in Supercomputer.
Сначала,в файле оболочки я ожидал напечатать
argument: 3
argument: 5
argument: 7
Однако он распечатал
argument: argument
argument: argument
argument: argument
Я думаю, что я сделал что-то не так в функции 'system' в коде R. Как я могу вызвать команду ОС и отправить аргумент вместе?
Причина, по которой я проверяю это, заключается в том, что я хочу получить myVector в MyRcode.R, отправить задание на слермы и отправить myVectorэлементы в качестве аргументов.Задание slurm запускает другой R-код в кластерах суперкомпьютера (параллельный запуск) с полученными аргументами.
Спасибо,