Пакетный файл странным образом перебирает подраздел R файла - PullRequest
0 голосов
/ 24 апреля 2019

У меня есть пакетный файл 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

Чего мне не хватает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...