J'ai besoin de convertir un vecteur numérique en caractère dans R. Comme je le sais, il existe différentes manières (voir ci-dessous).
Il semble que les moyens les plus rapides sont Sprintf et GetTextf. P>
set.seed(1)
a <- round(runif(100000), 2)
system.time(b1 <- as.character(a))
user system elapsed
0.108 0.000 0.105
system.time(b2 <- formatC(a))
user system elapsed
0.052 0.000 0.052
system.time(b3 <- sprintf('%.2f', a))
user system elapsed
0.044 0.000 0.046
system.time(b4 <- gettextf('%.2f', a))
user system elapsed
0.048 0.000 0.046
system.time(b5 <- paste0('', a))
user system elapsed
0.124 0.000 0.129
3 Réponses :
En réalité, il semble que sortie: p> mon formatc code> sort plus vite: sessionInfo code>: p>
Trois autres méthodes que je peux penser, dont aucune n'est aussi rapide que la dernière est fondamentalement gettextf code> sont as.character. Par défaut code>, dépêche de la méthode de contournement. Les horaires pour tous sont à peu près les mêmes que Coller (a) Code> P> P>
Merci. J'essaie de trouver les moyens les plus rapides de convertir le vecteur numérique en un vecteur de caractère.
D'accord. Je suis sûr que vous les avez déjà montrées :) Votre question demande s'il y a une autre manière de convertir numérique en caractères.
Depuis que vous avez arrondi a code> à la précision finie, effectuez la conversion des valeurs uniques une fois et recherchez-les > microbenchmark(f0(a), f1(a))
Unit: milliseconds
expr min lq mean median uq max neval
f0(a) 46.05171 46.89991 47.33683 47.42225 47.58196 52.43244 100
f1(a) 10.97090 11.39974 11.48993 11.52598 11.58505 11.90506 100
Merci pour votre conseil. Unique est une bonne suggestion car mes données réelles ont des valeurs dupliquées.
Vous pouvez probablement trouver un couple de plus de façons de le faire dans ce récent thread Où j'ai demandé de transformer les booléens en entiers.