Column types

library(tibble)

概要

この vignette では、既知のデータ型の概要とその略称、およびその由来について説明する。 例えば <int> は整数の列を表し <chr> は文字列を表する。

Class Data type Example Column header
Atomic logical TRUE lgl
integer 1L int
double 1.5 dbl
character "A" chr
complex 0+1i cpl
raw as.raw(1) raw
list list(1) list
named list list(a = 1) named list
Built-in objects factor factor("A") fct
ordered ordered("a") ord
Date Sys.Date() date
POSIXt Sys.time() dttm
difftime vctrs::new_duration(1) drtn
Objects from other packages hms hms::hms(1) time
integer64 bit64::as.integer64(1e+10) int64
blob blob::blob(raw(1)) blob
Data frames data.frame data.frame(a = 1) df[,1]
tbl_df tibble(a = 1) tibble[,1]
Unchanged AsIs I(1L) I
vctrs types unspecified vctrs::unspecified(1) ???
vctrs_list_of vctrs::list_of(c(1L)) list
vctrs_vctr vctrs::new_vctr(1L) vctrs_vc
vctrs_partial_factor vctrs::partial_factor(letters) prtl_fctr
vctrs_partial_frame vctrs::partial_frame(a = 1) prtl
Language objects function function() NULL fn
symbol quote(a) sym
expression parse(text = "a <- 1\nb<- 2") expression
quosures rlang::quos(a = 1) quos

値の例

以下の概要には、各タイプの値の例が記載されている。

#> Rows: 1
#> Columns: 23
#> $ logical       <lgl> TRUE
#> $ integer       <int> 1
#> $ double        <dbl> 1.5
#> $ character     <chr> "A"
#> $ complex       <cpl> 0+1i
#> $ raw           <raw> 01
#> $ list          <list> 1
#> $ `named list`  <named list> 1
#> $ factor        <fct> A
#> $ ordered       <ord> a
#> $ Date          <date> 2022-11-27
#> $ POSIXt        <dttm> 2022-11-27 05:58:04
#> $ difftime      <drtn> 1 secs
#> $ hms           <time> 00:00:01
#> $ integer64     <int64> 10000000000
#> $ blob          <blob> 00
#> $ data.frame    <df[,1]> <data.frame[1 x 1]>
#> $ tbl_df        <tibble[,1]> <tbl_df[1 x 1]>
#> $ AsIs          <I<int>> 1
#> $ unspecified   <???> NA
#> $ vctrs_list_of <list<int>> 1
#> $ vctrs_vctr    <vctrs_vc> 1
#> $ quosures      <quos> <~1>

実装

列のヘッダーは、列に対して pillar::type_sum() を呼び出すことで得られる。 これは S3 メソッドであり、オーバーライドすることができる。 が、たいていの場合は vctrs::vec_ptype_abbr() をオーバーライドしたほうが便利である。

pillar:::type_sum.default
#> function (x) 
#> {
#>     pillar_attr <- attr(x, "pillar", exact = TRUE)
#>     label <- pillar_attr$label
#>     if (!is.null(label)) {
#>         return(I(label))
#>     }
#>     if (is.object(x) || vec_is(x)) {
#>         return(vec_ptype_abbr(x))
#>     }
#>     switch(typeof(x), builtin = , special = , closure = "fn", 
#>         environment = "env", symbol = if (is_missing(x)) {
#>             "missing"
#>         } else {
#>             "sym"
#>         }, typeof(x))
#> }
#> <bytecode: 0x7fb4c8337ee0>
#> <environment: namespace:pillar>