這是一支身份證字號驗證程式 只要輸入IDcheck(你的身份證字號) 就可以知道是否正確。

IDcheck=function(input){
a=input
#transfer ABC to abc
a=toupper(a)
#Seperate the characters
A=unlist(strsplit(a, split="", fixed=T))

B=c(1,A)
if ( A[1]=="A" ) B[1:2]=unlist(strsplit("10", split="", fixed=T))
if ( A[1]=="B" ) B[1:2]=unlist(strsplit("11", split="", fixed=T))
if ( A[1]=="C" ) B[1:2]=unlist(strsplit("12", split="", fixed=T))
if ( A[1]=="D" ) B[1:2]=unlist(strsplit("13", split="", fixed=T))
if ( A[1]=="E" ) B[1:2]=unlist(strsplit("14", split="", fixed=T))
if ( A[1]=="F" ) B[1:2]=unlist(strsplit("15", split="", fixed=T))
if ( A[1]=="G" ) B[1:2]=unlist(strsplit("16", split="", fixed=T))
if ( A[1]=="H" ) B[1:2]=unlist(strsplit("17", split="", fixed=T))
if ( A[1]=="I" ) B[1:2]=unlist(strsplit("34", split="", fixed=T))
if ( A[1]=="J" ) B[1:2]=unlist(strsplit("18", split="", fixed=T))
if ( A[1]=="K" ) B[1:2]=unlist(strsplit("19", split="", fixed=T))
if ( A[1]=="L" ) B[1:2]=unlist(strsplit("20", split="", fixed=T))
if ( A[1]=="M" ) B[1:2]=unlist(strsplit("21", split="", fixed=T))
if ( A[1]=="N" ) B[1:2]=unlist(strsplit("22", split="", fixed=T))
if ( A[1]=="O" ) B[1:2]=unlist(strsplit("35", split="", fixed=T))
if ( A[1]=="P" ) B[1:2]=unlist(strsplit("23", split="", fixed=T))
if ( A[1]=="Q" ) B[1:2]=unlist(strsplit("24", split="", fixed=T))
if ( A[1]=="R" ) B[1:2]=unlist(strsplit("25", split="", fixed=T))
if ( A[1]=="S" ) B[1:2]=unlist(strsplit("26", split="", fixed=T))
if ( A[1]=="T" ) B[1:2]=unlist(strsplit("27", split="", fixed=T))
if ( A[1]=="U" ) B[1:2]=unlist(strsplit("28", split="", fixed=T))
if ( A[1]=="V" ) B[1:2]=unlist(strsplit("29", split="", fixed=T))
if ( A[1]=="W" ) B[1:2]=unlist(strsplit("32", split="", fixed=T))
if ( A[1]=="X" ) B[1:2]=unlist(strsplit("30", split="", fixed=T))
if ( A[1]=="Y" ) B[1:2]=unlist(strsplit("31", split="", fixed=T))
if ( A[1]=="Z" ) B[1:2]=unlist(strsplit("33", split="", fixed=T))

B=as.numeric(B)

Y=B[1]+B[2]*9+B[3]*8+B[4]*7+B[5]*6+B[6]*5+B[7]*4+B[8]*3+B[9]*2+B[10]*1+B[11]*1
if (Y%%10==0) print("沒錯") else print("有誤")

}