Como executar o script R anexando-o a um script de shell no Linux?

1

Estou tentando enviar um trabalho para ser executado no cluster. E isso é feito escrevendo um script de submissão sbatch . O trabalho envolve abrir o R 3.1.3 e executar o script R referenciado no servidor.

Aqui está o script de shell que eu escrevi:

#!/bin/bash
#SBATCH --account=810639
#SBATCH --time=1200
#SBATCH --mem-per-cpu=4096
#SBATCH --ntasks=1
#SBATCH --constraint=normalmem
#SBATCH --output=output_%j.txt
#SBATCH --error=error_output_%j.txt
#SBATCH --job-name=AggrigatePIXEL
#SBATCH --partition=ESG_Std
#SBATCH --mail-type=FAIL
#SBATCH [email protected]
# print date and time
module load R/3.1.3
module load geos/gcc/64/3.4.2
module load netcdf/gcc/64/4.3.3
module load gdal/gcc/64/1.11.1
source('AggrigatePIXEL_Forecast_easyVerfication_SERVERversion.R')

Quando tento executar o script de shell (salvo como yate.sh), aparece a seguinte mensagem de erro:

./yate.sh: line 20: syntax error near unexpected token
'AggrigatePIXEL_Forecast_easyVerfication_SERVERversion.R'

./yate.sh: line 20: 
source('AggrigatePIXEL_Forecast_easyVerfication_SERVERversion.R')

Eu sei que o problema está relacionado à abertura e execução do script .R, que requer a execução do programa R primeiro. Alguém pode me ajudar sobre como eu posso instruir isso no script de shell?

    
por live fan 06.07.2015 / 15:39

2 respostas

1

Não estou familiarizado com o R, mas seu script está tentando ser executado como um script básico, não como um script R. Altere sua primeira linha para #!/usr/bin/Rscript ou possivelmente #!/usr/bin/env Rscript . Você pode precisar alterar o caminho para onde R estiver em seu sistema.

De acordo com o link , ele deve começar como este exemplo :

#! /path/to/Rscript --vanilla --default-packages=utils
args <- commandArgs(TRUE)
res <- try(install.packages(args))
if(inherits(res, "try-error")) q(status=1) else q()'
    
por 06.07.2015 / 17:07
0

Em vez de source (), execute com Rscript:

Rscript AggrigatePIXEL_Forecast_easyVerfication_SERVERversion.R
    
por 14.11.2016 / 19:42