Я должен добавить двузначную проверку (оставшуюся деление на 97) на такие цифры, как 52/200005/0001 (слэши должны игнорироваться).Как вычислить контрольную цифру для большого числа в R?
Мой код заключается в следующем, но она не из-за слишком большого числа:
AppendCheckDigits <- function (x) {
stopifnot(is.character(x) & length(x) == 1 & nchar(x) == 14)
cd <- as.integer(paste(substring(x, 1, 2),
substring(x, 4, 9),
substring(x, 11, 14), sep="")) %% 97
paste(x, "/", cd, sep="")
}
проверить его с:
AppendCheckDigits("52/200005/0001")
Как я могу решить эту проблему?
Что еще я могу сказать, чем «Я не ожидал такого идеального ответа, ясного и обширного»? Не знаю! ;-) – user3341592
Код AppendCheckDigits <- function (x) { stopifnot (is.character (x) & nchar (x) == 14) num <- as.numeric (gsub ("/", "", x)) %% 97 paste0 (x, "/", num), похоже, работает так же, как ваш. Здесь нет «rep» и «return». Действительно ли они важны? } – user3341592
@ user3341592 Нет, вы правы, с правилом утилизации нет необходимости использовать 'rep' здесь. Ваш код в порядке и чище. – juba