Ваша функция в настоящий момент ничего не возвращает, и каждый раз при запуске она создает один и тот же фрейм данных с 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 будет перезаписан дополнительной строкой.
Все, что происходит внутри функции, не будет постоянным, пока функция не вернет его и ему не назначат.