问题描述
我正在尝试使用正则表达式在没有小数的数字末尾添加“ .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
#------------