当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R tibble num 设置数值向量的格式


[Experimental]

构造一个数值向量,可以使用预定义的有效数字或小数点后最大或固定位数进行格式化。支持缩放,以及强制使用小数、科学或工程符号。如果给出了标签,它会显示在列的标题中。

当打印或格式化矢量时,以及在 tibble 列中,会应用该格式。格式化注释和类可以在大多数算术转换中幸存下来,最显著的例外是 var()sd()

set_num_opts() 将格式化选项添加到任意数值向量,对于与其他类型组合非常有用。

用法

num(
  x,
  ...,
  sigfig = NULL,
  digits = NULL,
  label = NULL,
  scale = NULL,
  notation = c("fit", "dec", "sci", "eng", "si"),
  fixed_exponent = NULL,
  extra_sigfig = NULL
)

set_num_opts(
  x,
  ...,
  sigfig = NULL,
  digits = NULL,
  label = NULL,
  scale = NULL,
  notation = c("fit", "dec", "sci", "eng", "si"),
  fixed_exponent = NULL,
  extra_sigfig = NULL
)

参数

x

一个数值向量。

...

这些点用于将来的扩展,并且必须为空。

sigfig

定义要显示的有效数字位数。必须是 1 或更大。不参考"pillar.sigfig" option。不能与 digits 结合使用。

digits

要显示的小数点后的位数。正数指定要显示的确切位数。负数指定(求负后)要显示的最大位数。对于 digits = 2 ,数字 1.2 和 1.234 分别打印为 1.20 和 1.23,而 digits = -2 则分别打印为 1.2 和 1.23。不能与 sigfig 结合使用。

label

显示标签而不是类型说明。

scale

显示前应用于数据的乘数。用于显示例如百分比。必须与 label 结合使用。

notation

"fit""dec""sci""eng""si" 之一。

  • "fit" :如果适合且消耗 13 位或更少,则使用小数表示法,否则使用科学计数法。 (数字柱的默认值。)

  • "dec" :使用十进制表示法,无论宽度如何。

  • "sci":使用科学记数法。

  • "eng" :使用工程符号,即使用三的倍数指数的科学符号。

  • "si" :使用 SI 表示法,支持 1e-241e24 之间的前缀。

fixed_exponent

对科学、工程或 SI 表示法中的所有数字使用相同的指数。 -Inf 使用数据中存在的最小数据,+Inf 使用数据中最大的 fixed_exponent。默认设置是使用不同的指数。

extra_sigfig

如果是TRUE,如果数据由大小相同但存在细微差别的数字组成,则增加有效位数。

也可以看看

其他向量类:char()

例子

# Display as a vector
num(9:11 * 100 + 0.5)
#> <pillar_num[3]>
#> [1]  900. 1000. 1100.

# Significant figures
tibble(
  x3 = num(9:11 * 100 + 0.5, sigfig = 3),
  x4 = num(9:11 * 100 + 0.5, sigfig = 4),
  x5 = num(9:11 * 100 + 0.5, sigfig = 5),
)
#> # A tibble: 3 × 3
#>        x3      x4      x5
#>   <num:3> <num:4> <num:5>
#> 1    900.   900.5   900.5
#> 2   1000.  1000.   1000.5
#> 3   1100.  1100.   1100.5

# Maximum digits after the decimal points
tibble(
  x0 = num(9:11 * 100 + 0.5, digits = 0),
  x1 = num(9:11 * 100 + 0.5, digits = -1),
  x2 = num(9:11 * 100 + 0.5, digits = -2),
)
#> # A tibble: 3 × 3
#>         x0       x1       x2
#>   <num:.0> <num:.1> <num:.2>
#> 1     900.    900.5    900.5
#> 2    1000.   1000.5   1000.5
#> 3    1100.   1100.5   1100.5

# Use fixed digits and a currency label
tibble(
  usd = num(9:11 * 100 + 0.5, digits = 2, label = "USD"),
  gbp = num(9:11 * 100 + 0.5, digits = 2, label = "£"),
  chf = num(9:11 * 100 + 0.5, digits = 2, label = "SFr")
)
#> # A tibble: 3 × 3
#>       usd     gbp     chf
#>       USD       £     SFr
#> 1  900.50  900.50  900.50
#> 2 1000.50 1000.50 1000.50
#> 3 1100.50 1100.50 1100.50

# Scale
tibble(
  small  = num(9:11 / 1000 + 0.00005, label = "%", scale = 100),
  medium = num(9:11 / 100 + 0.0005, label = "%", scale = 100),
  large  = num(9:11 / 10 + 0.005, label = "%", scale = 100)
)
#> # A tibble: 3 × 3
#>   small medium large
#>       %      %     %
#> 1 0.905   9.05  90.5
#> 2 1.00   10.0  100. 
#> 3 1.10   11.0  110. 

# Notation
tibble(
  sci = num(10^(-13:6), notation = "sci"),
  eng = num(10^(-13:6), notation = "eng"),
  si  = num(10^(-13:6), notation = "si"),
  dec = num(10^(-13:6), notation = "dec")
)
#> # A tibble: 20 × 4
#>      sci     eng   si                   dec
#>    <sci>   <eng> <si>                 <dec>
#>  1 1e-13 100e-15 100f       0.0000000000001
#>  2 1e-12   1e-12   1p       0.000000000001 
#>  3 1e-11  10e-12  10p       0.00000000001  
#>  4 1e-10 100e-12 100p       0.0000000001   
#>  5 1e- 9   1e- 9   1n       0.000000001    
#>  6 1e- 8  10e- 9  10n       0.00000001     
#>  7 1e- 7 100e- 9 100n       0.0000001      
#>  8 1e- 6   1e- 6   1µ       0.000001       
#>  9 1e- 5  10e- 6  10µ       0.00001        
#> 10 1e- 4 100e- 6 100µ       0.0001         
#> 11 1e- 3   1e- 3   1m       0.001          
#> 12 1e- 2  10e- 3  10m       0.01           
#> 13 1e- 1 100e- 3 100m       0.1            
#> 14 1e+ 0   1e+ 0   1        1              
#> 15 1e+ 1  10e+ 0  10       10              
#> 16 1e+ 2 100e+ 0 100      100              
#> 17 1e+ 3   1e+ 3   1k    1000              
#> 18 1e+ 4  10e+ 3  10k   10000              
#> 19 1e+ 5 100e+ 3 100k  100000              
#> 20 1e+ 6   1e+ 6   1M 1000000              

# Fixed exponent
tibble(
  scimin = num(10^(-7:6) * 123, notation = "sci", fixed_exponent = -Inf),
  engmin = num(10^(-7:6) * 123, notation = "eng", fixed_exponent = -Inf),
  simin  = num(10^(-7:6) * 123, notation = "si", fixed_exponent = -Inf)
)
#> # A tibble: 14 × 3
#>               scimin            engmin             simin
#>                [e-5]             [e-5]               [µ]
#>  1              1.23              12.3              12.3
#>  2             12.3              123               123  
#>  3            123               1230              1230  
#>  4           1230              12300             12300  
#>  5          12300             123000            123000  
#>  6         123000            1230000           1230000  
#>  7        1230000           12300000          12300000  
#>  8       12300000          123000000         123000000  
#>  9      123000000         1230000000        1230000000  
#> 10     1230000000        12300000000       12300000000  
#> 11    12300000000       123000000000      123000000000  
#> 12   123000000000      1230000000000     1230000000000  
#> 13  1230000000000     12300000000000    12300000000000  
#> 14 12300000000000    123000000000000   123000000000000  

tibble(
  scismall = num(10^(-7:6) * 123, notation = "sci", fixed_exponent = -3),
  scilarge = num(10^(-7:6) * 123, notation = "sci", fixed_exponent = 3),
  scimax   = num(10^(-7:6) * 123, notation = "sci", fixed_exponent = Inf)
)
#> # A tibble: 14 × 3
#>             scismall          scilarge            scimax
#>                [e-3]              [e3]              [e8]
#>  1            0.0123      0.0000000123 0.000000000000123
#>  2            0.123       0.000000123  0.00000000000123 
#>  3            1.23        0.00000123   0.0000000000123  
#>  4           12.3         0.0000123    0.000000000123   
#>  5          123           0.000123     0.00000000123    
#>  6         1230           0.00123      0.0000000123     
#>  7        12300           0.0123       0.000000123      
#>  8       123000           0.123        0.00000123       
#>  9      1230000           1.23         0.0000123        
#> 10     12300000          12.3          0.000123         
#> 11    123000000         123            0.00123          
#> 12   1230000000        1230            0.0123           
#> 13  12300000000       12300            0.123            
#> 14 123000000000      123000            1.23             

#' Extra significant digits
tibble(
  default = num(100 + 1:3 * 0.001),
  extra1 = num(100 + 1:3 * 0.001, extra_sigfig = TRUE),
  extra2 = num(100 + 1:3 * 0.0001, extra_sigfig = TRUE),
  extra3 = num(10000 + 1:3 * 0.00001, extra_sigfig = TRUE)
)
#> # A tibble: 3 × 4
#>   default  extra1   extra2      extra3
#>     <num>   <num>    <num>       <num>
#> 1    100. 100.001 100.0001 10000.00001
#> 2    100. 100.002 100.0002 10000.00002
#> 3    100. 100.003 100.0003 10000.00003
源代码:R/pillar.R

相关用法


注:本文由纯净天空筛选整理自Kirill Müller等大神的英文原创作品 Format a numeric vector。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。