library(tibble)
Base Rでは、有効桁数および科学的記数法への切り替えを制御するために、"digits"
および "scipen"
オプションが用意されている。 tibbleについては、"pillar.sigfig"
と "pillar.max_dec_width"
のオプションが同様の目的を果たす。 この vignette では、共通点と相違点を紹介している。 すべてのオプションの概要については、?pillar::pillar_options
と ?tibble_options
を参照。
getOption("digits")
のデフォルトは7であるが、"pillar.sigfig"
のオプションはデフォルトが3である。 デフォルトの設定では、pillarは最初の3桁のみを表示す(つまり、数値の値の99.9%以上を表す桁)。 もう一つの違いは、pillar はスペースがあっても最大で指定された有効桁数しか表示しないことである。 その理由は、横方向のスペースをあまりとらず、重要でない桁に気を取られることなく、数字の最も重要な桁を素早く見ることができるようにするためである。
options(digits = 3)
c(1.2345, 12.345, 123.45, 1234.5, 12345)
#> [1] 1.23 12.35 123.45 1234.50 12345.00
tibble(x = c(1.2345, 12.345, 123.45, 1234.5, 12345))
#> # A tibble: 5 × 1
#> x
#> <dbl>
#> 1 1.23
#> 2 12.3
#> 3 123.
#> 4 1234.
#> 5 12345
末尾のゼロは、表示されている有効桁を越えてゼロ以外の値がある場合にのみピラーで表示される。 これは、スペースがあれば常に終端ゼロが表示され、値が小さすぎる場合は隠されるベースRとは対照的である。
c(1, 1.00001)
#> [1] 1 1
tibble(x = c(1, 1.00001))
#> # A tibble: 2 × 1
#> x
#> <dbl>
#> 1 1
#> 2 1.00
小数部があっても整数部がすでに有効桁を超えている場合は、末尾の小数点が表示される。 小数点の区切り文字があることは、数字が大きいことを示すのではなく、ゼロ以外の小数部分が存在することを示すだけである。
c(123, 123.45, 567.89)
#> [1] 123 123 568
tibble(x = c(123, 123.45, 567.89))
#> # A tibble: 3 × 1
#> x
#> <dbl>
#> 1 123
#> 2 123.
#> 3 568.
より多くの有効数字を表示すには、"pillar.sigfig"
オプションをより大きな値に設定する。
options(digits = 7)
options(pillar.sigfig = 7)
c(1.2345, 12.345, 123.45, 1234.5, 12345)
#> [1] 1.2345 12.3450 123.4500 1234.5000 12345.0000
tibble(x = c(1.2345, 12.345, 123.45, 1234.5, 12345))
#> # A tibble: 5 × 1
#> x
#> <dbl>
#> 1 1.2345
#> 2 12.345
#> 3 123.45
#> 4 1234.5
#> 5 12345
"pillar.sigfig"
を大きく設定しても、重要でないと判断した桁の表示は強化されていない。
options(digits = 7)
options(pillar.sigfig = 7)
c(1.2345, 12.3456, 123.4567, 1234.5678, 12345.6789)
#> [1] 1.2345 12.3456 123.4567 1234.5678 12345.6789
tibble(x = c(1.2345, 12.3456, 123.4567, 1234.5678, 12345.6789))
#> # A tibble: 5 × 1
#> x
#> <dbl>
#> 1 1.2345
#> 2 12.3456
#> 3 123.4567
#> 4 1234.568
#> 5 12345.68
小数点以下の固定桁数を表示すには、num()
に digits
を引数として与える。
num(c(1.2345, 12.345, 123.45, 1234.5, 12345), digits = 2)
#> <pillar_num:.2![5]>
#> [1] 1.23 12.35 123.45 1234.50 12345.00
詳しくは vignette("numbers")
を参照。
ベースRもピラーも、10進数表現が広くなりすぎると科学的な表記に切り替わる。 getOption("scipen")
が大きいほど、科学的記数法に切り替えることへの抵抗が強くなる。 デフォルトの 0
は、整数部が13桁に固定されているようである。
123456789012
#> [1] 123456789012
123456789012.3
#> [1] 123456789012
1234567890123
#> [1] 1.234568e+12
1234567890123.4
#> [1] 1.234568e+12
options(scipen = 1)
1234567890123
#> [1] 1234567890123
12345678901234
#> [1] 1.234568e+13
12345678901234.5
#> [1] 1.234568e+13
"pillar.max_dec_width"
オプションも同様で、科学的記数法への切り替えが起こるために超えなければならない幅を示す。 この幅には、小数点以下の区切り文字も含まれる。
tibble(x = 123456789012)
#> # A tibble: 1 × 1
#> x
#> <dbl>
#> 1 123456789012
tibble(x = 123456789012.3)
#> # A tibble: 1 × 1
#> x
#> <dbl>
#> 1 123456789012.
tibble(x = 1234567890123)
#> # A tibble: 1 × 1
#> x
#> <dbl>
#> 1 1234567890123
tibble(x = 1234567890123.4)
#> # A tibble: 1 × 1
#> x
#> <dbl>
#> 1 1.234568e12
options(pillar.max_dec_width = 14)
tibble(x = 1234567890123)
#> # A tibble: 1 × 1
#> x
#> <dbl>
#> 1 1234567890123
tibble(x = 12345678901234)
#> # A tibble: 1 × 1
#> x
#> <dbl>
#> 1 12345678901234
tibble(x = 12345678901234.5)
#> # A tibble: 1 × 1
#> x
#> <dbl>
#> 1 1.234568e13
科学的記数法に切り替わらないようにするには、"pillar.max_dec_width"
オプションを大きな値に設定してみよう。 なお、列を表示すために必要な幅がない場合は、この場合、全く表示されていない。 num()
の引数 notation
には、さらに多くのオプションが用意されている。
num(12345678901234567, notation = "dec")
#> <pillar_num(dec)[1]>
#> [1] 12345678901234568
num(12345678901234567, notation = "sci")
#> <pillar_num(sci)[1]>
#> [1] 1.234568e16
num(12345678901234567, notation = "eng")
#> <pillar_num(eng)[1]>
#> [1] 12.34568e15
num(12345678901234567, notation = "si")
#> <pillar_num(si)[1]>
#> [1] 12.34568P