parse_factor is similar to factor(), but will generate
warnings if elements of x are not found in levels.
parse_factor(
x,
levels = NULL,
ordered = FALSE,
na = c("", "NA"),
locale = default_locale(),
include_na = TRUE,
trim_ws = TRUE
)
col_factor(levels = NULL, ordered = FALSE, include_na = FALSE)Character vector of values to parse.
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?
Character vector of strings to interpret as missing values. Set this
option to character() to indicate no missing values.
The locale controls defaults that vary from place to place.
The default locale is US-centric (like R), but you can use
locale() to create your own locale that controls things like
the default time zone, encoding, decimal mark, big mark, and day/month
names.
If NA are present, include as an explicit factor to level?
Should leading and trailing whitespace (ASCII spaces and tabs) be trimmed from each field before parsing it?
Other parsers:
col_skip(),
cols_condense(),
cols(),
parse_datetime(),
parse_guess(),
parse_logical(),
parse_number(),
parse_vector()
parse_factor(c("a", "b"), letters)
#> [1] a b
#> Levels: a b c d e f g h i j k l m n o p q r s t u v w x y z
x <- c("cat", "dog", "caw")
levels <- c("cat", "dog", "cow")
# Base R factor() silently converts unknown levels to NA
x1 <- factor(x, levels)
# parse_factor generates a warning & problems
x2 <- parse_factor(x, levels)
#> Warning: 1 parsing failure.
#> row col expected actual
#> 3 -- value in level set caw
# Using an argument of `NULL` will generate levels based on values of `x`
x2 <- parse_factor(x, levels = NULL)