Il nocciolo dell'argomento è il seguente:Aumentare prestazioni allontanandosi da un ciclo
Una funzione che ho scritto, prende in considerazione un argomento, una stringa alfanumerica, e deve emettere una stringa dove i valori di ogni elemento di questa stringa alfanumerica viene scambiato per un po 'di "mappatura". MRE come segue:
#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)
}
Sto cercando di allontanarsi dal for loop
per qualcosa che aumenta le prestazioni, come funziona la funzione, ma è piuttosto lento per la quantità di elementi che ho fornito in questa forma:
unlist(lapply(dat$alphanum, function(x) as_numbers(x)))
Un esempio delle stringhe di input potrebbe essere: 549300JV8KEETQJYUG13
. Questo dovrebbe portare a una stringa come 5493001931820141429261934301613
Fornendo solo una stringa in questo caso:
> as_numbers("549300JV8KEETQJYUG13")
[1] "5493001931820141429261934301613"
Post pertinente: [Converti stringa binaria in valore binario o decimale] (http://stackoverflow.com/questions/12892348) – zx8754