One Way to Write the Function

markup <- function(n) {
  if ( n < 1 ) {
    return(cat("Give a positive integer, please!"))
  }
  number <- 1
  while ( number < n ) {
    cat(number, ", (", sample(colors(), size = 1), ") ...\n", sep = "")
    number <- number + 1
  }
  cat(n, ".  All done!\n", sep = "")
}

Try it out:

markup(6)
## 1, (gray36) ...
## 2, (mediumorchid4) ...
## 3, (olivedrab2) ...
## 4, (mediumpurple2) ...
## 5, (navajowhite) ...
## 6.  All done!
markup(0)
## Give a positive integer, please!
markup(1)
## 1.  All done!

Another Way

You could keep pestering the user until he/she enters valid input.

markupPester <- function(n) {
  valid <- function(input) {
    !is.na(input) & is.numeric(input) & input >= 1
  }
  if ( !valid(n) ) {
    repeat {
      n <- as.numeric(readline("Give a positive integer, please! "))
      if ( valid(n) ) break
    }
  }
  number <- 1
  while ( number < n ) {
    cat(number, ", (", sample(colors(), size = 1), ") ...\n", sep = "")
    number <- number + 1
  }
  cat(n, ".  All done!\n", sep = "")
}

Try this one out:

markupPester(5)
## 1, (seashell4) ...
## 2, (grey12) ...
## 3, (grey77) ...
## 4, (lightcyan2) ...
## 5.  All done!
markupPester(0)
Give a positive integer, please!-2
Give a positive integer, please!-7
Give a positive integer, please!0
Give a positive integer, please!4
1, (lightgoldenrod) ...
2, (honeydew) ...
3, (darkgoldenrod2) ...
4.  All done!