Я следил за видео на Youtube, в котором рассказывалось о том, как создать интерактивное меню в R. Я сделал некоторые вещи из оригинального видео, но ничего радикального, что могло бы создать или сломать код (по крайней мере, я так думаю).
видео на YouTube, которое я смотрел:
https://www.youtube.com/watch?v=uaPBpJArh0M
Выскочило меню, и я попытался ввести ненулевые значения. Я ожидал, что после ввода «1» появится следующее сообщение:
1. Binomial
2. Poisson
3. Geometric
4. Negative Binomial
5. Hypergeometric
6. Uniform
7. Normal
8. Exponential
Please choose a menu item: 1
Good choice!
Выбор любого другого ненулевого числа даст вместо этого следующее сообщение:
1. Binomial
2. Poisson
3. Geometric
4. Negative Binomial
5. Hypergeometric
6. Uniform
7. Normal
8. Exponential
Please choose a menu item: 2
Bad choice.
И выбор любого другого вывода, например 0 или любого нецелого числа, приведет к появлению сообщения «Пожалуйста, выберите пункт меню»:
''»
Пожалуйста, выберите пункт меню: 0
Пожалуйста, выберите пункт меню: s
'' '
Однако, несмотря на наличие допустимых входов ненулевых значений, цикл продолжал прерываться.
Please choose a menu item: 1
Please choose a menu item: 2
Please choose a menu item: 3
Please choose a menu item: 4
Please choose a menu item: 5
Please choose a menu item: 6
Please choose a menu item: 7
Определенная функция, которая, кажется, работает, - это часть кода:
inputNumber <- function(prompt) {
# Usage: num = inputNumber(prompt)
#
# Displays prompt and asks for a number.
# Repeats until user inputs a valid number.
while(TRUE) {
num = suppressWarnings(as.numeric(readline(prompt)))
if(!is.na(num)) {
break
}
}
}
displayMenu <- function(options) {
# Usage: choice = displayMenu(options)
#
# Displays a menu of options,
# ask the user to choose an item,
# and return the number of the menu item chosen.
#
# Input options Menu options (cell array of strings)
# Output choice Chosen option (integer)
# Display menu options
for (i in 1:length(options)) {
cat(sprintf("%d. %s\n", i, options[i]))
}
# Gets a valid menu choice
choice <- 0
while (!any(choice == 1:length(options))) {
choice = inputNumber("Please choose a menu item: ")
}
return(choice)
}
# Define menu options
menuItems <- c("Binomial", "Poisson", "Geometric", "Negative Binomial", "Hypergeometric", "Uniform", "Normal", "Exponential")
# Displays the menu
choice <- displayMenu(menuItems)
if(choice == 1) {
print("Good choice!")
} else {
print("Bad choice.")
}