R语言,暂停循环并要求用户继续
R language, pause loop and ask user for continue
我有一个想法,在某些迭代时暂停循环,并向 "user" 询问一些答案。
例如
some_value = 0
some_criteria = 50
for(i in 1:100)
{
some_value = some_value + i
if(some_value > some_criteria)
{
#Here i need to inform the user that some_value reached some_criteria
#I also need to ask the user whether s/he wants to continue operations until the loop ends
#or even set new criteria
}
}
同样,我想暂停循环,并询问用户是否愿意继续:"Press Y/N"
some_value = 0
some_criteria = 50
continue = FALSE
for(i in 1:100){
some_value = some_value + i
print(some_value)
if(some_value > some_criteria && continue == FALSE){
#Here i need to infrom user, that some_value reached some_criteria
print(paste('some_value reached', some_criteria))
#I also need to ask user whether he wants co countinue operations until loop ends
#or even set new criteria
question1 <- readline("Would you like to proceed untill the loop ends? (Y/N)")
if(regexpr(question1, 'y', ignore.case = TRUE) == 1){
continue = TRUE
next
} else if (regexpr(question1, 'n', ignore.case = TRUE) == 1){
question2 <- readline("Would you like to set another criteria? (Y/N)")
if(regexpr(question2, 'y', ignore.case = TRUE) == 1){
some_criteria <- readline("Enter the new criteria:")
continue = FALSE
} else {
break
}
}
}
}
对于此类事情,使用 pop-up 消息对话通常会显得更加醒目和更加用户友好。下面我为此使用了 tcltk2 包中的 tkmessageBox
。在此示例中,我使用 break
在满足条件后退出循环。根据您的具体用例,有时在这种情况下最好使用 while
循环,而不是过早地退出 for
循环。
library(tcltk2)
some_value = 0
some_criteria = 50
continue = TRUE
for(i in 1:100) {
some_value = some_value + i
if(some_value > some_criteria) {
response <- tkmessageBox(
message = paste0('some_value > ', some_criteria, '. Continue?'),
icon="question",
type = "yesno",
default = "yes")
if (as.character(response)[1]=="no") continue = FALSE
}
if (!continue) break()
}
我有一个想法,在某些迭代时暂停循环,并向 "user" 询问一些答案。
例如
some_value = 0
some_criteria = 50
for(i in 1:100)
{
some_value = some_value + i
if(some_value > some_criteria)
{
#Here i need to inform the user that some_value reached some_criteria
#I also need to ask the user whether s/he wants to continue operations until the loop ends
#or even set new criteria
}
}
同样,我想暂停循环,并询问用户是否愿意继续:"Press Y/N"
some_value = 0
some_criteria = 50
continue = FALSE
for(i in 1:100){
some_value = some_value + i
print(some_value)
if(some_value > some_criteria && continue == FALSE){
#Here i need to infrom user, that some_value reached some_criteria
print(paste('some_value reached', some_criteria))
#I also need to ask user whether he wants co countinue operations until loop ends
#or even set new criteria
question1 <- readline("Would you like to proceed untill the loop ends? (Y/N)")
if(regexpr(question1, 'y', ignore.case = TRUE) == 1){
continue = TRUE
next
} else if (regexpr(question1, 'n', ignore.case = TRUE) == 1){
question2 <- readline("Would you like to set another criteria? (Y/N)")
if(regexpr(question2, 'y', ignore.case = TRUE) == 1){
some_criteria <- readline("Enter the new criteria:")
continue = FALSE
} else {
break
}
}
}
}
对于此类事情,使用 pop-up 消息对话通常会显得更加醒目和更加用户友好。下面我为此使用了 tcltk2 包中的 tkmessageBox
。在此示例中,我使用 break
在满足条件后退出循环。根据您的具体用例,有时在这种情况下最好使用 while
循环,而不是过早地退出 for
循环。
library(tcltk2)
some_value = 0
some_criteria = 50
continue = TRUE
for(i in 1:100) {
some_value = some_value + i
if(some_value > some_criteria) {
response <- tkmessageBox(
message = paste0('some_value > ', some_criteria, '. Continue?'),
icon="question",
type = "yesno",
default = "yes")
if (as.character(response)[1]=="no") continue = FALSE
}
if (!continue) break()
}