Я написал код, который отвечает на некоторые вопросы пользователя и выполняет функцию, но мое состояние слишком плохое.
если ответ yes
, выполните функцию x, если ответ no
, перейдите к функции x.
Проблема в том, что любой ответ, кроме функции yes
, переходит x
Оригинальный код
userInput <- function(question) {
cat(question)
con <- file("stdin")
on.exit(close(con))
n <- readLines(con, n = 1)
return(n)
}
if (opt$indexBuild) {
if (!file.exists(file.path(paste(index_Folder, '/', 'Genome', sep = '')))) {
index_genom <- star.index.function()
}else{
write(paste("Index genome files already exists."), stderr())
if (casefold(userInput("Would you like to delete and re-run index generation? (yes or no) "), upper = FALSE) == 'yes') {
index_genom <- star.index.function()
}
}
}
Я пробовал использовать во время цикла, но безуспешно.
userInput <- function(question) {
cat(question)
con <- file("stdin")
on.exit(close(con))
n <- readLines(con, n = 1)
return(n)
}
if (opt$indexBuild) {
if (!file.exists(file.path(paste(index_Folder, '/', 'Genome', sep = '')))) {
index_genom <- star.index.function()
}else{
write(paste("Index genome files already exists."), stderr())
while (casefold((!(userInput("Would you like to delete and re-run index generation? (yes or no) ") %in% c('yes', 'no'))))) {
write(paste("You should specify 'yes' or 'no' "), stderr())
}
index_genom <- star.index.function()
}
}
opt $ indexBuild это внешний параметр.
Вывод «в порядке». Это делает то, что я ожидаю, но если ответ yes
или no
, код выполняет ту же функцию.
(Рис.1) Если ответ не положительный или нет, продолжайте спрашивать, если да, выполните index_genom <- star.index.function()
. это правильно.
(Рис.2) Если ответ не положительный или нет, продолжайте спрашивать, если нет, выполните index_genom <- star.index.function()
. это не правильно.