将数字格式化为两位数

Format numeric to two-digits

我有一列数字class,例如:v <- c(12345, 2345, 7689900)

我知道每个数字实际上都是12.345, 23.45, 76.89900的形式,即每个数字都有两位数,其余是小数。

如何将矢量转换成这种格式?在此过程中不应裁剪任何小数。

使用正则表达式,我们可以捕获由 "." 分隔的两组数据。

sub('(..)(.*)', '\1.\2', v)
#[1] "12.345"   "23.45"    "76.89900"

如果您想对此进行一些操作,可以将其包装在 as.numeric 中。

如果您要查找数值向量,一个选项可能是:

v/10^(nchar(v) - 2)

[1] 12.345 23.450 76.899

编辑:

如果我们有超过 20 个数字,我们可以 Count the number of integer digits 使用 log10:

v/10^(floor(log10(abs(v))) + 1 - 2)
as.numeric(paste0(substring(v,1,2), ".", substring(v,3)))
# [1] 12.345 23.450 76.899