У меня есть пакетный файл test.bat
на рабочем столе Windows со следующим содержимым:
cd /d W:\r\dev\
"C:\Program Files\R\R-3.5.0\bin\i386\Rscript.exe" scripts\some_function.R
При выполнении указанный скрипт R some_function.R
начинает работать и выводит сообщения на консоль, чтобы сообщить мне, где он находится. Однако он останавливается после достижения определенной точки в коде R, затем начинается снова и продолжается до тех пор, пока сеанс не завершится автоматически.
Я проверил код R на предмет того, почему пакетный файл будет продолжать возвращаться к началу, и я не нашел ни одного. Файл R отлично работает при непосредственном запуске (например, из R studio).
Мне хорошо известно, что присвоение имени командному файлу команды, которая появляется в файле, может быть проблематичным , но это не то, что здесь происходит. Я пробовал несколько имен для командного файла, но это, похоже, не решило проблему.
Ниже приведено начало кода в указанном файле some_function.R
, который продолжает выполняться повторно:
library(data.table)
dir <- gsub(x= getwd(), pattern = "(.:/r/)(.*)",replacement = "\\1")
envir <- gsub(x= getwd(), pattern = "(.:/r/)(\\w+)",replacement = "\\2")
cat(paste("directory = "),dir,"\n","environment = ",envir,"\n")
##############################################################
# Load System Parameters #
##############################################################
cat("Loading system parameters ...","\n")
sys_param_file_path <- paste0(dir,"shared/files/system/sys_param.csv")
sys_params <- data.table(read.csv(sys_param_file_path, stringsAsFactors = FALSE))
sys_params <- sys_params[param_envir == envir,]
for(i in 1:nrow(sys_params)){
if(sys_params[i,param_type] == "environment path"){
sys_params[i,param_val := paste(dir,envir,param_val,sep = "")]
}
if(sys_params[i,param_type] == "root path"){
sys_params[i,param_val := paste(substr(dir,1,nchar(dir)-1),param_val,sep = "")]
}
}
cat(paste("Loaded",nrow(sys_params),"parameters","\n"))
и вывод консоли при вызове командного файла:
C:\Users\me\Desktop> cd /d W:\r\dev\
W:\r\dev>"C:Program Files\R\R-3.5.0\bin\i386\Rscript.exe" scripts\some_function.R
Warning message:
package 'data.table' was built under R version 3.5.1
directory = W:/r/
environment = dev
Loading system parameters ...
Loaded 32 parameters
directory = W:/r/
environment = dev
Loading system parameters ...
Loaded 32 parameters
directory = W:/r/
environment = dev
Loading system parameters ...
Loaded 32 parameters
Чего мне не хватает?