我必須在52/200005/0001(必須忽略斜線)的數字上添加一個2位數的支票(除97除外)。如何計算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 2014-10-03 15:12:08
代碼AppendCheckDigits < - function(x){stoplexnot(is.character(x)&nchar(x)== 14) num < - as.numeric(gsub(「/」,「」,x ))%% 97 paste0(x,「/」,num)似乎和你一樣工作。這裏沒有「rep」,也沒有「return」。他們真的很重要嗎? } – user3341592 2014-10-03 15:28:28
@ user3341592不,你說得對,使用回收規則時不需要在這裏使用'rep'。你的代碼很好,更乾淨。 – juba 2014-10-03 18:39:21