微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用正则表达式将“ .0”添加到不带小数的数字末尾

如何解决使用正则表达式将“ .0”添加到不带小数的数字末尾

我正在尝试使用正则表达式在没有小数的数字末尾添加“ .0”。

一个简单的可复制示例:

library(tidyverse)
library(stargazer)

mtcars %>% 
  head(3) %>% 
  select(mpg,hp) %>% 
  stargazer(summary = FALSE,digits = 1,type = "text")

给出如下所示的输出

#> 
#> ======================
#>               mpg  hp 
#> ----------------------
#> Mazda RX4      21  110
#> Mazda RX4 Wag  21  110
#> Datsun 710   22.8   93 
#> ----------------------

我想将".0"加到所有尚未有小数位的数字上。所以我想要的输出将是html的版本:

#> ======================
#>               mpg  hp 
#> ----------------------
#> Mazda RX4     21.0  110.0
#> Mazda RX4 Wag 21.0  110.0
#> Datsun 710    22.8   93.0 
#> ----------------------

出于可读性考虑,上表为文本格式,但是我的真正问题是HTML,因此我正在研究类似的问题:

library(tidyverse)
library(stargazer)

mtcars %>% 
  head(3) %>% 
  select(mpg,type = "html")


#> <table style="text-align:center"><tr><td colspan="3" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left"></td><td>mpg</td><td>hp</td></tr>
#> <tr><td colspan="3" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left">Mazda RX4</td><td>21</td><td>110</td></tr>
#> <tr><td style="text-align:left">Mazda RX4 Wag</td><td>21</td><td>110</td></tr>
#> <tr><td style="text-align:left">Datsun 710</td><td>22.8</td><td>93</td></tr>
#> <tr><td colspan="3" style="border-bottom: 1px solid black"></td></tr></table>

任何人都可以提供gsub,正则表达式或stringr解决方案的帮助吗?

previous question提供了乳胶解决方案的答案,但我需要HTML解决方案。

解决方法

我们可以使用sprintf

library(dplyr)
library(stargazer)
mtcars %>% 
  head(3) %>% 
  select(mpg,hp) %>%
  mutate(across(everything(),sprintf,fmt = '%0.1f')) %>%
  stargazer(summary = FALSE,digits = 1,type = 'text')

-输出

#============
#  mpg   hp  
#------------
#1 21.0 110.0
#2 21.0 110.0
#3 22.8 93.0 
#------------

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。