This question already has answers here:
Comma separator for numbers in R?

(4 个回答)


6年前关闭。




我想格式化数字,以便每千个应该用空格分隔。

我试过的:
library(magrittr)
addSpaceSep <- function(x) {
  x %>%
    as.character %>%
    strsplit(split = NULL) %>%
    unlist %>%
    rev %>%
    split(ceiling(seq_along(.) / 3)) %>%
    lapply(paste, collapse = "") %>%
    paste(collapse = " ") %>%
    strsplit(split = NULL) %>%
    unlist %>%
    rev %>%
    paste(collapse = "")
}

> sapply(c(1, 12, 123, 1234, 12345, 123456, 123456, 1234567), addSpaceSep)
[1] "1"         "12"        "123"       "1 234"     "12 345"    "123 456"   "123 456"
[8] "1 234 567"
> sapply(c(1, 10, 100, 1000, 10000, 100000, 1000000), addSpaceSep)
[1] "1"      "10"     "100"    "1 000"  "10 000" "1e +05" "1e +06"

编写这个临时函数让我感到非常难过,但由于我还没有掌握正则表达式,这是我找到的唯一方法。当然,如果将数字转换为科学格式,它就行不通了。

最佳答案

这似乎更适合 format() 函数而不是正则表达式。 format() 函数用于格式化数字

format(c(1, 12, 123, 1234, 12345, 123456, 123456, 1234567), big.mark=" ", trim=TRUE)
# [1] "1"         "12"        "123"       "1 234"     "12 345"    "123 456"
# [7] "123 456"   "1 234 567"
format(c(1, 10, 100, 1000, 10000, 100000, 1000000), big.mark=" ", scientific=FALSE, trim=TRUE)
# [1] "1"         "10"        "100"       "1 000"     "10 000"    "100 000"
# [7] "1 000 000"

关于regex - 如何用空格分隔千位,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30648323/

10-13 05:00