This question already has answers here:
Comma separator for numbers in R?
(4 个回答)
6年前关闭。
我想格式化数字,以便每千个应该用空格分隔。
我试过的:
编写这个临时函数让我感到非常难过,但由于我还没有掌握正则表达式,这是我找到的唯一方法。当然,如果将数字转换为科学格式,它就行不通了。
(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