No momento, estou tentando executar um script R por meio de um script de shell.
Aqui o script R:
test = rnorm(1:100, 1000)
write.csv(test, 'test.csv')
E aqui o script bash que chama o R:
#!/bin/bash -l
#SBATCH --partition=compute
#SBATCH --job-name=test
#SBATCH --mail-type=ALL
#SBATCH [email protected]
#SBATCH --time=00:10:00
#SBATCH --nodes=1
#SBATCH --tasks-per-node=12
#SBATCH --account=myaccount
module purge
module load R
${HOME}/test.R
Acho que fiz tudo certo, mas a saída retorna o seguinte erro:
/mydirectory/test.R: line 3: syntax error near unexpected token `('
/mydirectory/test.R: line 3: `test = rnorm(1:100, 1000)'
Por que recebi esse erro?
O problema é que o shell está tentando executar o seu
${HOME}/test.R
com umbash
interpretador para o qual não está tentando entender a sintaxe da linha número 3. Use oR
interpretador explicitamente a partir do qual desejatest.R
executar.Defina o interpretador para o seu
Rscript
intest.R
comoDessa forma, com o interpretador definido, agora você pode executá-lo a partir do script de shell como
Lembre-se, fazer login no
R
shell e executar os comandos nele e experimentá-lo no script do shell não são os mesmos, oR
shell é diferente dobash
shell. Você precisa usar a maneira de executar os comandos sem fazer loginR
diretamente na linha de comando e usar a mesma abordagem no script de shell.