Z szuflady - test numeru pesel
Jakiś czas temu, napisałem kilka prostych funkcji sprawdzających poprawność numerów. Jedną z takich funkcji jest funkcja sprawdzająca poprawność numeru PESEL.
function(pesel){ if(nchar((pesel))==11){ cat("Poprawna długość numeru Pesel.\nSprawdzam poprawność numeru:\n") wagi <- "1379137913" suma=0 for (i in 1:10){ suma+as.numeric(substr(pesel,i,i))*as.numeric(substr(wagi,i,i)) -> suma } sumakontrolna <- 10 - (suma %% 10) if (sumakontrolna == as.numeric(substr(pesel,11,11))){ cat ("NUMER PESEL PRAWIDŁOWY\n") return(TRUE) } else{ cat ("Błąd sumy kontrolnej\n") return(FALSE) } }else{ cat("Pesel ma nieodpowiednia ilość znaków.\n")} return(FALSE) }
Created by Pretty R at inside-R.org
Poniższa implementacja przyjmuje jako argument wektor numerów pesel i zwraca wektor wartości logicznych TRUE, gdy prawidłowy i FALSE, gdy błędny.
function(PESEL){ wynik <- logical(length(PESEL)) for (p in 1:length(PESEL)){ pesel <- PESEL[p] if(nchar((pesel))==11){ wagi <- "1379137913" suma=0 for (i in 1:10){ suma+as.numeric(substr(pesel,i,i))*as.numeric(substr(wagi,i,i)) -> suma } sumakontrolna <- 10 - (suma %% 10) if (sumakontrolna == as.numeric(substr(pesel,11,11))){ wynik[p] <- TRUE }else{wynik[p]<-FALSE} }else{wynik[p]<-FALSE} } return(wynik) }