Я предполагаю, что вы выполняете это в интерактивной R-сессии, возможно, RStudio. В том случае, когда вы запускаете весь файл, каждая строка выполняется независимо от того, какие предыдущие строки были успешными или нет. Если вместо этого вы запустите сценарий из командной строки / терминала операционной системы, он сломается на stop()
, когда условие оператора if()
- ЛОЖЬ.
Попробуйте сделать это, чтобы увидеть, что происходит, когда условие ЛОЖЬ:
Rscript -e 'if(FALSE){print("Successful check, all good to proceed"}
else{print("Execution stopped. Check Table1");stop()};a<-1;a'
Попробуйте, чтобы увидеть, что происходит, когда условие ИСТИНА:
Rscript -e 'if(TRUE){print("Successful check, all good to proceed"}
else{print("Execution stopped. Check Table1");stop()};a<-1;a'
Чтобы добиться требуемого поведения, вы можете выполнить весь файл из командная строка / терминал операционной системы с Rscript
или [edit:] просто перемещают дополнительный код в оператор if
Примерно так должно работать:
if (check_date == Sys.Date()) {
print("Successful check, all good to proceed")
# more code here
} else {
stop("Execution stopped. Check Table1")
}
}