Попросите пользователя ввести имя data.frame - PullRequest
0 голосов
/ 03 августа 2020

Я пытаюсь разработать сценарий, в котором пользователь может выбирать, какие «тесты» выполнять со своими данными. Я хочу попросить пользователя ввести имя своего набора данных, а затем автоматически заменить имя своих данных на имя по умолчанию, чтобы код мог выполнять другие тесты (я не знаю, как сделать «заполнитель» для имя, которое вводит пользователь).

readline не может этого сделать, поскольку он собирает только введенное имя как символ, а не имя объекта. Я искал любые возможные решения, но не нашел ни одного.

Есть идеи?

Моя функция следующая:

 {   inputNumber <- function(prompt) {
  
  while(TRUE) {
  num<-suppressWarnings(as.numeric(readline(prompt)))
    if(!is.na(num)) {
      return(num)
    }
  }
}

displayMenu2 <- function(options2) {
  # Usage: choice2 = displayMenu2(options2) 
  # 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(options2)) {
    cat(sprintf("%d. %s\n", i, options2[i]))
  }
  
  # Gets a valid menu choice
  choice2 <- 0
  while (!any(choice2 == 1:length(options2))) {
    choice2 = inputNumber("Please choose a menu item: ")
  }
  
  return(choice2)
}
  
  # Define menu options
  menuItems2   <- c("Main Data", "Test Data", "Unknown Data")
  
  while(TRUE) {
    # Displays the menu
    choice2 <- displayMenu2(menuItems2)
    
    if(choice2 == 1) {
#This is where the issue is; readline() takes the input and delivers it as a character
#I want it to remain as an object which includes all data within object
      print("Main data selection")
    main_data_selection<-as.data.frame(invisible(readline(prompt="Enter main data name: ")))
    main_data_selection_bc<-main_data_selection
    print("Data has been stored as: main_data_selection")
      
    }
#More stuff happens after this...
}
...