Skip to content

Checks for differences between the name column in object and in expected in the following order:

  1. Check that the name column exists in object

  2. Check class with vec_check_class()

  3. Check length with vec_check_dimensions()

  4. If the column is a factor, check factor levels with vec_check_levels()

  5. Check column values with vec_check_values()

If the columns differ

  • tbl_check_column() returns a list describing the problem

  • tbl_grade_column() returns a failing grade and informative message with gradethis::fail()

Usage

tbl_check_column(
  column,
  object = .result,
  expected = .solution,
  check_class = TRUE,
  check_length = TRUE,
  check_values = TRUE,
  check_names = FALSE,
  env = parent.frame()
)

tbl_grade_column(
  column,
  object = .result,
  expected = .solution,
  max_diffs = 3,
  check_class = TRUE,
  check_length = TRUE,
  check_values = TRUE,
  check_names = FALSE,
  env = parent.frame(),
  ...
)

Arguments

column

[character(1)]
The name of the column to check.

object

A data frame to be compared to expected.

expected

A data frame containing the expected result.

check_class

[logical(1)]
Whether to check that column has the same class in object and expected.

check_length

[logical(1)]
Whether to check that column has the same length in object and expected.

check_values

[logical(1)]
Whether to check that column has the same values in object and expected.

check_names

[logical(1)]
Whether to check that column has the same names in object and expected. Defaults to FALSE.

env

The environment in which to find .result and .solution.

max_diffs

[numeric(1)]
The maximum number of mismatched values to print. Defaults to 3.

...

Arguments passed on to gradethis::fail

hint

Include a code feedback hint with the failing message? This argument only applies to fail() and fail_if_equal() and the message is added using the default options of give_code_feedback() and maybe_code_feedback(). The default value of hint can be set using gradethis_setup() or the gradethis.fail.hint option.

encourage

Incude a random encouraging phrase with random_encouragement()? The default value of encourage can be set using gradethis_setup() or the gradethis.fail.encourage option.

Value

If there are any issues, a list from tbl_check_column() or a gradethis::fail() message from tbl_grade_column(). Otherwise, invisibly returns NULL.

Problems

  1. names (table_problem): object doesn't contain a column named column.

  2. class: Any mismatch in the classes of the column.

  3. length: The column doesn't have the expected length.

  4. levels_n, levels, levels_reversed, levels_order: See vec_check_levels().

  5. values: The column doesn't have the expected values.

  6. names (column_problem): The column has different names than expected.

  7. names_order: The column has the same names as expected, but in a different order.

Examples

.result <- tibble::tibble(a = 1:10, b = 11:20)
.solution <- tibble::tibble(a = letters[1:10], b = letters[11:20])
tbl_check_column("a")
#> <tblcheck problem>
#> Your `a` column should be a vector of text (class `character`), but it is a vector of integers (class `integer`).
#> $ type           : chr "class"
#> $ expected       : chr "character"
#> $ actual         : chr "integer"
#> $ expected_length: int 10
#> $ actual_length  : int 10
#> $ location       : chr "column"
#> $ column         : chr "a"
tbl_grade_column("a")
#> <gradethis_graded: [Incorrect]
#>   Your `a` column should be a vector of text (class `character`),
#>   but it is a vector of integers (class `integer`).
#> >

.result <- tibble::tibble(a = 1:10, b = 11:20)
.solution <- tibble::tibble(a = 1:11, b = 12:22)
tbl_check_column("a")
#> <tblcheck problem>
#> Your `a` column should contain 11 values, but it has 10 values. I expected your result to include the value `11`.
#> $ type           : chr "length"
#> $ expected       : int [1:11] 1 2 3 4 5 6 7 8 9 10 ...
#> $ actual         : int [1:10] 1 2 3 4 5 6 7 8 9 10
#> $ expected_length: int 11
#> $ actual_length  : int 10
#> $ location       : chr "column"
#> $ column         : chr "a"
tbl_grade_column("a")
#> <gradethis_graded: [Incorrect]
#>   Your `a` column should contain 11 values, but it has 10 values.
#>   I expected your result to include the value `11`.
#> >

.result <- tibble::tibble(a = 1:10, b = 11:20)
.solution <- tibble::tibble(a = 11:20, b = 1:10)
tbl_check_column("a")
#> <tblcheck problem>
#> The first 3 values of your `a` column should be `11`, `12`, and `13`, not `1`, `2`, and `3`.
#> $ type    : chr "values"
#> $ expected: int [1:10] 11 12 13 14 15 16 17 18 19 20
#> $ actual  : int [1:10] 1 2 3 4 5 6 7 8 9 10
#> $ location: chr "column"
#> $ column  : chr "a"
tbl_grade_column("a")
#> <gradethis_graded: [Incorrect]
#>   The first 3 values of your `a` column should be `11`, `12`, and
#>   `13`, not `1`, `2`, and `3`.
#> >
tbl_grade_column("a", max_diffs = 5)
#> <gradethis_graded: [Incorrect]
#>   The first 5 values of your `a` column should be `11`, `12`,
#>   `13`, `14`, and `15`, not `1`, `2`, `3`, `4`, and `5`.
#> >
tbl_grade_column("a", max_diffs = Inf)
#> <gradethis_graded: [Incorrect]
#>   The first 10 values of your `a` column should be `11`, `12`,
#>   `13`, `14`, `15`, `16`, `17`, `18`, `19`, and `20`, not `1`,
#>   `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, and `10`.
#> >