【发布时间】:2021-06-09 07:35:48
【问题描述】:
我试图坚持使用 base R 作为个人挑战。不过,我并不致力于使用 grepl,这只是我的第一个想法。我遇到了障碍。
这是我目前所拥有的:
armstrong <- function(x) {
if (grepl("^[-]{0,1}[0-9]{0,}.{0,1}[0-9]{1,}$", x) == FALSE) {
stop("Please try submitting a valid number")
}
else {
temp <- strsplit(as.character(x), split = "")
y <- sapply(temp, function(y)sum(as.numeric(y)^length(y)))
if (y == x) {
print(paste("The number you entered,", x ,", is an Armstrong number"))
}
else {
print(paste("The number you entered,", x ,", is not an Armstrong number"))
}
}
}
armstrong(readline(prompt = "Please enter a three digit positive number"))
程序检查用户是否输入了Armstrong number。那部分有效。我坚持的是用户输入的错误处理。如果用户输入负数,或者如果他们输入数字之间的字符,例如 1a4,我无法让 grepl 输出 FALSE。如果 grepl 输出 FALSE 就好了,因为用户输入的数字不是 3 位数,但这没什么大不了的,因为该函数仍然可以工作。
如何更新正则表达式以帮助处理错误?
【问题讨论】:
标签: r error-handling user-input grepl