使用正则表达式将“.0”添加到没有小数点的数字末尾
Using regex to add `.0` to the end of numbers without a decimal
我正在尝试使用正则表达式将“.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
#> ----------------------
上面的 table 是为了便于阅读而采用的文本格式,但我真正的问题是 HTML,所以我正在寻找这样的问题:
library(tidyverse)
library(stargazer)
mtcars %>%
head(3) %>%
select(mpg, hp) %>%
stargazer(summary = FALSE, digits = 1, 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
解决方案吗?
这个 有乳胶解决方案的答案,但我正在寻找 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
#------------
我正在尝试使用正则表达式将“.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
#> ----------------------
上面的 table 是为了便于阅读而采用的文本格式,但我真正的问题是 HTML,所以我正在寻找这样的问题:
library(tidyverse)
library(stargazer)
mtcars %>%
head(3) %>%
select(mpg, hp) %>%
stargazer(summary = FALSE, digits = 1, 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
解决方案吗?
这个
我们可以使用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
#------------