gpt4 book ai didi

r - 在 R 中将数字转换为字符的最快方法

转载 作者:行者123 更新时间:2023-12-04 09:09:43 24 4
gpt4 key购买 nike

我需要将数字向量转换为 R 中的字符。据我所知,有不同的方法(见下文)。

似乎最快的方法是 sprintf 和 gettextf。

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

是否有其他方法将数字转换为 R 中的字符?感谢您的任何建议。

最佳答案

其实好像是formatC出来更快:

library(microbenchmark)
a <- round(runif(100000), 2)
microbenchmark(
as.character(a),
formatC(a),
format(a),
sprintf('%.2f', a),
gettextf('%.2f', a),
paste0('', a)
)

输出:
Unit: milliseconds
expr min lq mean median uq max neval
as.character(a) 69.58868 70.74803 71.98464 71.41442 72.92168 82.21936 100
formatC(a) 33.35502 36.29623 38.83611 37.60454 39.27079 72.92176 100
format(a) 55.98344 56.78744 58.00442 57.64804 58.83614 66.15601 100
sprintf("%.2f", a) 46.54285 47.40126 48.53067 48.10791 49.12717 65.26819 100
gettextf("%.2f", a) 46.74888 47.81214 49.23166 48.60025 49.16692 84.90208 100
paste0("", a) 86.62459 88.67753 90.80720 89.86829 91.33774 125.51421 100

我的 sessionInfo :
R version 3.1.0 (2014-04-10)
Platform: x86_64-apple-darwin13.1.0 (64-bit)

locale:
[1] en_AU.UTF-8/en_AU.UTF-8/en_AU.UTF-8/C/en_AU.UTF-8/en_AU.UTF-8

attached base packages:
[1] stats graphics grDevices utils datasets methods base

other attached packages:
[1] microbenchmark_1.4-2

loaded via a namespace (and not attached):
[1] colorspace_1.2-4 digest_0.6.4 ggplot2_1.0.0 grid_3.1.0 gtable_0.1.2 MASS_7.3-35
[7] munsell_0.4.2 plyr_1.8.1 proto_0.3-10 Rcpp_0.11.3 reshape2_1.4 scales_0.2.4
[13] stringr_0.6.2 tools_3.1.0

关于r - 在 R 中将数字转换为字符的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28447014/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com