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!