cols() includes all columns in the input data, guessing the column types as the default. cols_only() includes only the columns you explicitly specify, skipping the rest.

cols(..., .default = col_guess())









col_factor(levels = NULL, ordered = FALSE, include_na = FALSE, ...)

col_datetime(format = "", ...)

col_date(format = "", ...)

col_time(format = "", ...)



Either column objects created by col_*(), or their abbreviated character names (as described in the col_types argument of vroom()). If you're only overriding a few columns, it's best to refer to columns by name. If not named, the column types must match the column names exactly. In col_*() functions these are stored in the object.


Any named columns not explicitly overridden in ... will be read with this column type.


Character vector providing set of allowed levels. if NULL, will generate levels based on the unique values of x, ordered by order of appearance in x.


Is it an ordered factor?


If NA are present, include as an explicit factor to level?


A format specification, as described below. If set to "", date times are parsed as ISO8601, dates and times used the date and time formats specified in the locale().

Unlike strptime(), the format specification must match the complete string.


The available specifications are: (with string abbreviations in brackets)

  • col_logical() [l], containing only T, F, TRUE or FALSE.

  • col_integer() [i], integers.

  • col_double() [d], doubles.

  • col_character() [c], everything else.

  • col_factor(levels, ordered) [f], a fixed set of values.

  • col_date(format = "") [D]: with the locale's date_format.

  • col_time(format = "") [t]: with the locale's time_format.

  • col_datetime(format = "") [T]: ISO8601 date times

  • col_number() [n], numbers containing the grouping_mark

  • col_skip() [_, -], don't import this column.

  • col_guess() [?], parse using the "best" type based on the input.


cols(a = col_integer())
#> cols( #> a = col_integer() #> )
cols_only(a = col_integer())
#> cols_only( #> a = col_integer() #> )
# You can also use the standard abbreviations cols(a = "i")
#> cols( #> a = col_integer() #> )
cols(a = "i", b = "d", c = "_")
#> cols( #> a = col_integer(), #> b = col_double(), #> c = col_skip() #> )
# You can also use multiple sets of column definitions by combining # them like so: t1 <- cols( column_one = col_integer(), column_two = col_number()) t2 <- cols( column_three = col_character()) t3 <- t1 t3$cols <- c(t1$cols, t2$cols) t3
#> cols( #> column_one = col_integer(), #> column_two = col_number(), #> column_three = col_character() #> )