В настоящее время у меня есть скрипт R, который принимает 8 параметров, которые жестко заданы в качестве первых 8 строк моего скрипта.
Я создал командный файл, чтобы попытаться вручную изменить параметры на лету, но, похоже, он работает не так, как я хочу.
Пакет, который в данный момент запускает скрипт (, но фактически не меняет параметры )
echo off
ECHO PRESS ENTER AT ANY INPUT TO ACCEPT the DEFAULT VALUE.
:: Setting of Variables
@Set /P RScript=Set path to R:_
@Set /P RProgram=Set path to RScript:_
@Set /P RStartDir=Set Start Directory:_
@Set /P Begin=Begin on which Loan?:_
@Set /P End=End on which Loan?:_
@Set /P OutputDir=Set Output Directory:_
@Set /P Deal=Set Deal input file (.txt):_
@Set /P OutputFile=Name Deal Output File:_
@Set /P AsOfDate=As of Date?:_
@Set /P ThirtyYrSpread=Thirty Year Mortgage Spread?:_
:: If Blank (enter), set variables/paths to Defaults (Listed Below)
if "%RScript%"=="" Set RScript=c:\program files\r\r-
3.4.3\bin\x64\rscript.exe
if "%RProgram%"=="" Set RProgram=C:\MortgageMatt\Cirt2014-
1\0.Mortgage Model.R
if "%RStartDir%"=="" Set RStartDir=C:\MortgageMatt\Cirt2014-1
if "%Begin%"=="" Set Begin=1
if "%End%"=="" Set End=2
if "%OutputDir%"=="" Set OutputDir=C:\MortgageMatt\Cirt2014-1
if "%Deal%"=="" Set Deal=Cirt 2014-1 Loan Level.txt
if "%OutputFile%"=="" Set OutputFile=Cirt 2014-1d
if "%AsOfDate%"=="" Set AsOfDate=62017
if "%ThirtyYrSpread%" == "" Set ThirtyYrSpread=135
echo "%RScript% %RProgram% %RStartDir% %Begin% %End% %OutputDir% %Deal%
%OutputFile% %AsOfDate% %ThirtyYrSpread%"
ECHO PLEASE CHECK IF THESE VALUES ARE CORRECT
pause
:: Command Prompt, /c Carries out command specified by string and then
terminates
cmd /c ""%RScript%" "%RProgram%" "%RStartDir%" "%Begin%" "%End%"
"%OutputDir%" "%Deal%" "%OutputFile%" "%AsOfDate%" "%ThirtyYrSpread%""
Итак, поскольку параметры на самом деле были жестко запрограммированы в R Script, я добавил это, чтобы попытаться приспособиться. Это выглядит хорошо? Я думаю, что здесь я сталкиваюсь с ошибками.
Добавлено в скрипт R
args <- commandArgs(trailingOnly = TRUE)
if (length(args) == 0) {
if (!exists("dataDir")) { stop("variables dataDir not found") }
# Set dataDir variable when Running inside a R Session
args <- c(getwd(), 1, 2, ".", "Cirt 2014-1 Loan Level.txt", "Cirt 2014-
1", "62017", 175)
}
print(args)
# Input Values
Input.Directory <- paste(args[1]) ## getwd() , "/", "inputs", sep = "")
Begin.Sim <- args[2]
End.Sim <- args[3]
Output.Directory <- paste(args[1],"\\",args[4],sep = "") ##, "/", "outputs",
sep = "")
Pool.ID.File <- args[5] #"Cirt 2014-1 Loan Level.txt"
Pool.ID <- args[6] #"Cirt 2014-1"
asofdate <- args[7] #"62017"
Thirty.Yr.Mort.Spread <- args[8] # 175
Когда я пытаюсь запустить его в cmd, используя .bat .. Я получаю сообщение об ошибке, которое говорит, что не может изменить рабочий каталог. У кого-нибудь есть предложения?
Я вроде понимаю, где ошибка, но я изо всех сил пытаюсь ее исправить.
Путь к моему файлу со всем в нем
C:\MortgageMatt\Cirt2014-1
Edit:
Я также слышал о чем-то, называемом R CMD Batch ... я должен рассмотреть это? Я обнаружил, что это старая техника.
Как выглядел мой код до Args / IF
# Input Values
Input.Directory <- "C:/Mortgage/Cirt 2014 - 1"
Output.Directory <- "C:/Mortgage/Cirt 2014 - 1"
Pool.ID.File <- "Cirt 2014-1 Loan Level.txt"
Pool.ID <- "Cirt 2014-1 NEW"
start<- 1
sims <- 2 # Number of Simulations
asofdate <- "62017"
Thirty.Yr.Mort.Spread <- 175