Как вывести переменную, которая была сохранена внутри функции в R? - PullRequest
0 голосов
/ 01 мая 2020

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

checknames <- function(){
  gamers <- c("Rebeca","Lucas","Mario")
  games <- c("3","1","3")
  scores <- c("200","100","205")
  table <- data.frame(gamers,games,scores)
  r=0
  name1 <- c()
  repeat{
    print("Name Player 1: ")
    name1=scan(,what="character",1)
    for(i in 1:length(gamers)){
      if(name1==gamers[i]){
        print("This player is already in the file. Would you like to change the name?")
        r=scan(,what="character",1)
      }
    }
    if(r==2){
      break
    }
    if(r==0){
      gamers=c(gamers,name1)
      name1 <- data.frame(gamers=name1,games="0",scores="100")
      table1 <- rbind(table,name1)
      print("Nice")
      break
    }
  }
}
checknames()

Надеюсь, вы можете мне помочь. Спасибо.

1 Ответ

0 голосов
/ 02 мая 2020

Ваша функция в настоящий момент ничего не возвращает, и каждый раз при запуске она создает один и тот же фрейм данных с 3 строками. Если вы хотите загрузить фрейм данных с новыми игроками, то вам нужно использовать его как ввод функции:

gamers <- c("Rebeca","Lucas","Mario")
games <- c("3","1","3")
scores <- c("200","100","205")
df <- data.frame(gamers,games,scores) ### a data frame with previously-registered users

checknames <- function(table){

  r=0
  name1 <- c()
  repeat{
    print("Name Player 1: ")
    name1=scan(,what="character",1)
    for(i in 1:length(gamers)){
      if(name1==gamers[i]){
        print("This player is already in the file. Would you like to change the name?")
        r=scan(,what="character",1)
      }
    }
    if(r==2){
      break
    }
    if(r==0){
      gamers=c(gamers,name1)
      name1 <- data.frame(gamers=name1,games="0",scores="100")
      table1 <- rbind(table,name1)
      print("Nice")
      break
    }
  }
return (table1)} ### returns the input df with an added row

df <- checknames(df)

Запустив это, вам будет предложено ввести новое имя и , если это не повторяется, ваш df будет перезаписан дополнительной строкой.

Все, что происходит внутри функции, не будет постоянным, пока функция не вернет его и ему не назначат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...