假设我喜欢将长度为k的字符串的任意组合映射为整数(如果只计算26个后者的上部和下部,则将具有(26 + 26)^ k组合。 r中有一个快速的方法来映射,给定长度为k的字符串为唯一整数吗?
例如: 1.假设k = 1和c(“a”,“d”,“z”),那么结果将是c(1,4,26)。 2.假设k = 2和c(“aa”,“da”,“zA”),那么结果将是c(53,157,1379)。
答案 0 :(得分:2)
conv <- function(strings, base = letters) {
s <- strsplit(strings, "")
vapply(s, function(x, base) {
x <- match(x, base)
as.integer(t(x) %*% (length(base)^(rev(seq_along(x)) - 1L)))
}, 1L, base=base)
}
#test it
strtoi("5A3", base=16)
#[1] 1443
conv("5A3", base=c(1:9, LETTERS[1:7]))
#[1] 1443
mystring <- c("a", "d", "z", "aa","da","zA")
conv(mystring, base = c(letters, LETTERS))
#[1] 1 4 26 53 209 1379
base
参数中可以轻松包含其他符号。