【发布时间】:2016-02-23 14:04:37
【问题描述】:
论证的要点如下:
我写的一个函数考虑了一个参数,一个字母数字字符串,并且应该输出一个字符串,其中这个字母数字字符串的每个元素的值都被切换为一些“映射”。 MRE如下:
#This is the original and switches value map
map = data.table(mapped = c(0:35), original = c(0:9,LETTERS))
#the function that I'm using:
as_numbers <- function(string) {
#split string unlisted
vector_unlisted <- unlist(strsplit(string,""))
#match the string in vector
for (i in 1:length(vector_unlisted)) {
vector_unlisted[i] <- subset(map, map$original==vector_unlisted[i])[[1]][1]
}
vector_unlisted <- paste0(vector_unlisted, collapse = "")
return(vector_unlisted)
}
我正试图从 for loop 移开一些可以提高性能的东西,因为该功能可以工作,但是对于我以这种形式提供的元素数量来说它非常慢:
unlist(lapply(dat$alphanum, function(x) as_numbers(x)))
输入字符串的示例是:549300JV8KEETQJYUG13。这应该会产生一个类似5493001931820141429261934301613
在这种情况下只提供一个字符串:
> as_numbers("549300JV8KEETQJYUG13")
[1] "5493001931820141429261934301613"
【问题讨论】:
标签: r data.table