Если вы сделаете это:
if (var1 == true) {
if (var2 == true) {
if (var3 == true) {
...
}
}
}
Тогда вы также можете реагировать на случаи, когда что-то не так. Например, если вы проверяете ввод, вы можете дать пользователю подсказку о том, как правильно его отформатировать, или как угодно.
Используя intToUtf8 для разделения затем инвертируйте:
tmp <- c(100001, 123321, 123456)
res <- sapply(tmp, function(i) intToUtf8(rev(utf8ToInt(as.character(i)))))
res
# [1] "100001" "123321" "654321"
, Чтобы проверить, является ли это палиндром:
tmp == res
# [1] TRUE TRUE FALSE
# bigger vector
tmpBIG <- rep(c(100001, 123321, 123456), 4000)
bench::mark(
GregSnow = { grepl( '^([0-9])([0-9])([0-9])\\3\\2\\1, tmpBIG) },
bartektartanus = { tmpBIG == stringi::stri_reverse(tmpBIG) },
Spacedman = { tmpBIG == sub( '^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])','\\6\\5\\4\\3\\2\\1', tmpBIG) },
Joshua = { tmpBIG == sapply(strsplit(as.character(tmpBIG),""), function(i) paste(rev(i),collapse="")) },
zx8754 = { tmpBIG == sapply(tmpBIG, function(i) intToUtf8(rev(utf8ToInt(as.character(i))))) },
relative = TRUE)[, 1:9]
# expression min median `itr/sec` mem_alloc `gc/sec` n_itr n_gc total_time
# <bch:expr> <dbl> <dbl> <dbl> <dbl> <dbl> <int> <dbl> <bch:tm>
# 1 GregSnow 1 1 6.82 1 NaN 23 0 517ms
# 2 bartektartanus 1.38 1.34 5.02 2.33 NaN 17 0 520ms
# 3 Spacedman 1.58 1.55 4.52 2.33 NaN 15 0 509ms
# 4 Joshua 5.82 5.56 1.24 5.29 Inf 5 6 617ms
# 5 zx8754 6.06 6.17 1 3.98 Inf 4 4 614ms