使用模数为5的字母[1:26],对于个人识别号码中的校验字符,将创建应为“ E”的“字符(0)”。有办法解决这个问题吗?这是精简版,但原理是相同的。
我可以生成一个字符向量列表,但是模数中的零会导致“ 11E”的缺失。
class ArticleDetailView(generic.DetailView):
model = Article
def get_context_data(self, **kwargs):
pk = self.kwargs['pk']
生成
PIN <- c("08A","07D","10C","11E", "10C")
DATA <- data.frame(PIN)
DATA %>% mutate(PIN = as.character(PIN)) -> DATA
LETTERS[(as.numeric(substr(DATA$PIN, start = 2, stop = 2)) * 7 +
as.numeric(substr(DATA$PIN, start = 1, stop = 1)) * 8 ) %% 5]
最后,我要针对校验字母字符将其重新运行以使数字有效。
[Output1] "A" "D" "C" "C"
辍学会中断序列并导致对齐错误
substr(DATA$PIN, start = 3, stop = 3)
[Output2] "A" "D" "C" "E" "C"
答案 0 :(得分:0)
其中之一是使用%%
赋予0值。不清楚条件,但是我们可以用ifelse
i1 <- (as.numeric(substr(DATA$PIN, start = 2, stop = 2)) * 7 +
as.numeric(substr(DATA$PIN, start = 1, stop = 1)) * 8 ) %% 5
LETTERS[ifelse(i1 == 0, max(i1) + 1, i1)]
#[1] "A" "D" "C" "E" "C"