Как я могу имитировать данные, которые пользователь записывает в R? - PullRequest
1 голос
/ 28 апреля 2020
checknames <- function(){
  gamers <- c("Rebeca","Luis","Paco")
  games <- c(3,2,7)
  scores <- c(100,110,50)
  table <- data.frame(gamers,games,scores)
  r=0
  p=0
  repeat{
    print("Name Player 1: ")
    name1=scan(,what="character",1)
    if(any(name1==gamers)){
      r=readline(prompt = "This player is already in the file. Would you like to change the name? \n 1. Yes \n 2. No \n Select an option: ")
    }
    else{
      r <- 0
    }
    if(r==2){
      break
    }
    if(r==0){
      gamers=c(gamers,name1)
      name1 <- data.frame(gamers=name1,games="1",scores="100")
      table <- rbind(table,name1)
      break
    }
  }
  table
  repeat{
    print("Name Player 2: ")
    name2=scan(,what="character",1)
    if(any(name2==gamers)){
      p=readline(prompt = "This player is already in the file. Would you like to change the name? \n 1. Yes \n 2. No \n Select an option: ")
    }
    else{
      p <- 0
    }
    if(p==2){
      break
    }
    if(p==0){
      gamers=c(gamers,name2)
      name2 <- data.frame(gamers=name2,games="1",scores="100")
      table <- rbind(table,name2)
      break
    }
  }
  table
}
table <-checknames()

Привет всем, я сделал код, который просит пользователя ввести 2 имени, и если это имя находится в таблице, он должен спросить пользователя, хочет ли он изменить свое имя. Проблема в том, что когда возникает вопрос, хочет ли он изменить свое имя, я даю ему 2 варианта: «1» для «Да» и «2» для «Нет», и я хочу, чтобы, когда пользователь вводил другие символы, такие как «t» или «7» (например), код сказал: «Эта опция недоступна, пожалуйста, выберите другую» или что-то в этом роде, и задайте в другой раз вопрос, хочет ли он изменить свое имя. Надеюсь, вы можете помочь мне, большое спасибо!

1 Ответ

1 голос
/ 28 апреля 2020

Вы можете реструктурировать операторы p check if в ifelse, который проверяет нужные вам случаи в порядке, если p=2, тогда, если p=0 и, наконец, если p not= 1

 p=1
  repeat{

    if(p==1){
      print("Name Player 2: ")
      name2=scan(,what="character",1)

      if(any(name2==gamers)){
        p=readline(prompt = "This player is already in the file. Would you like to change the name? \n 1. Yes \n 2. No \n Select an option: ")
        if(p==0){p<-99}
      }else{
        p <- 0
      }

    }else if(p==2){
      break
    }else if(p==0){
      gamers=c(gamers,name2)
      name2 <- data.frame(gamers=name2,games="1",scores="100")
      table <- rbind(table,name2)
      break
    }else{
      repeat{
        p=readline(prompt = "This option is unavailable, please chose another one \n 1. Yes \n 2. No \n Select an option: ")
        if(p==1|p==2){break}
      }
    }
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...