Readr functions will only throw an error if parsing fails in an unrecoverable
way. However, there are lots of potential problems that you might want to
know about - these are stored in the problems
attribute of the
output, which you can easily access with this function.
stop_for_problems()
will throw an error if there are any parsing
problems: this is useful for automated scripts where you want to throw
an error as soon as you encounter a problem.
problems(x = .Last.value)
stop_for_problems(x)
An data frame (from read_*()
) or a vector
(from parse_*()
).
A data frame with one row for each problem and four columns:
Row and column of problem
What readr expected to find
What it actually got
if (requireNamespace("readr")) {
x <- readr::parse_integer(c("1X", "blah", "3"))
problems(x)
y <- readr::parse_integer(c("1", "2", "3"))
problems(y)
}
#> Warning: 2 parsing failures.
#> row col expected actual
#> 1 -- no trailing characters 1X
#> 2 -- no trailing characters blah