加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式 – 如何用空格分隔数千

发布时间:2020-12-14 05:46:41 所属栏目:百科 来源:网络整理
导读:参见英文答案 Comma separator for numbers in R?????????????????????????????????????3个 我想格式化数字,以便每千个应该用空格分隔. 我尝试过的: library(magrittr)addSpaceSep - function(x) { x %% as.character %% strsplit(split = NULL) %% unlist
参见英文答案 > Comma separator for numbers in R?????????????????????????????????????3个
我想格式化数字,以便每千个应该用空格分隔.

我尝试过的:

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,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,big.mark=" ",trim=TRUE)
# [1] "1"         "12"        "123"       "1 234"     "12 345"    "123 456"  
# [7] "123 456"   "1 234 567"
format(c(1,scientific=FALSE,trim=TRUE)
# [1] "1"         "10"        "100"       "1 000"     "10 000"    "100 000"  
# [7] "1 000 000"

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读