Automatically grade a table resulting from student code using
gradethis::grade_this() and tbl_grade() to compare the
student's result with the author's solution.
Usage
grade_this_table(
correct = NULL,
pre_check = NULL,
post_check = NULL,
pass_if_equal = TRUE,
...,
max_diffs = 3,
cols = NULL,
check_class = TRUE,
ignore_class = NULL,
check_names = TRUE,
check_column_order = FALSE,
check_dimensions = TRUE,
check_groups = TRUE,
check_columns = TRUE,
check_column_class = check_columns,
check_column_values = check_columns,
hint = getOption("gradethis.fail.hint", FALSE),
encourage = getOption("gradethis.fail.encourage", FALSE),
pass.praise = NULL
)Arguments
- correct
[character(1)]
The message shown to the student when their.resultmatches the exercise.solution, ifpass_if_equalisTRUE.- pre_check, post_check
[expression]
Code to run before or after the table or vector grading is performed. The pre check runs before callinggradethis::pass_if_equal()so that you can modify or adjust the student's.resultor the.solutionif there are parts of either that need to be ignored. These arguments can also be used in conjunction with thepass_if_equaloption when the grading requirements are more involved.- pass_if_equal
[logical(1)]
WhenTRUE(default), the.resultis compared to the.solutionwithgradethis::pass_if_equal()after the pre check and before calling the tblcheck grading function. WhenFALSE, you will need to include your own call togradethis::pass()in eitherpre_checkorpost_checkfor the student to be able to receive a passing grade.- ...
Additional arguments passed to
graded()or additional data to be included in the feedback object.- max_diffs
[numeric(1)]
The maximum number of mismatched values to display in an informative failure message. Passed totbl_check_names()to determine the number of mismatched column names to display and then_valuesargument oftbl_check_column()to determine the number of mismatched column values to display. Defaults to 3.- cols
[
tidy-select]
A selection of columns to compare betweenobjectandexpected. Differences in other columns will be ignored. IfNULL, the default, all columns will be checked.- check_class
[logical(1)]
Whether to check thatobjectandexpectedhave the same classes withtbl_check_class().- ignore_class
[character()]
A vector of classes to ignore when finding differences betweenobjectandexpected.If an element is named, differences will only be ignored between the pair of the element and its name. For example,
ignore_class = c("integer" = "numeric")will ignore class differences only ifobjecthas class integer andexpectedhas class numeric, or vice versa.If all the classes of
expectedare included inignore_class, aclassproblem will never be returned.- check_names
[logical(1)]
Whether to check thatobjectandexpectedhave the same column names withtbl_check_names().- check_column_order
[logical(1)]
Whether to check that the columns ofobjectare in the same order asexpectedwithtbl_check_names(). Defaults toFALSE.- check_dimensions
[logical(1)]
Whether to check thatobjectandexpectedhave the same number of rows and columns withtbl_check_dimensions().- check_groups
[logical(1)]
Whether to check thatobjectandexpectedhave the same groups withdplyr::group_vars().- check_columns
[logical(1)]
Whether to check that all columns have the same contents withtbl_check_column().- check_column_class
[logical(1)]
Whether to check that each columns has the same class inobjectandexpected.- check_column_values
[logical(1)]
Whether to check that each column has the same values inobjectandexpected.- hint
Include a code feedback hint with the failing message? This argument only applies to
fail()andfail_if_equal()and the message is added using the default options ofgive_code_feedback()andmaybe_code_feedback(). The default value ofhintcan be set usinggradethis_setup()or thegradethis.fail.hintoption.- encourage
Include a random encouraging phrase with
random_encouragement()? The default value ofencouragecan be set usinggradethis_setup()or thegradethis.fail.encourageoption.- pass.praise
Logical
TRUEorFALSEto determine whether a praising phrase should be automatically prepended to anypass()orpass_if_equal()messages. Sets thegradethis.pass.praiseoption.
Value
The returned feedback is equivalent to gradethis grading code
using grade_this() with the following
components:
First the
pre_checkcode, if any, is evaluated. If this code callspass(),fail(), or their equivalents, that feedback is provided immediately.If
pass_if_equalisTRUE, thenpass_if_equal()is called to compare the.resultto the.solution. The message incorrectis used for the feedback.The appropriate tblcheck grading function is called, returning any feedback:
grade_this_table()returns the results fromtbl_grade()grade_this_vector()returns the results fromvec_grade()
The
post_checkcode, if any, is evaluated and any feedback from a call topass(),fail(), or their equivalents is returned.Finally, if no other feedback is returned, the feedback from
gradethis::fail()is provided to the student, using the optionsfail.message,fail.hintandfail.encourage.
See also
Other graders:
grade_this_vector()
Examples
ex <- gradethis::mock_this_exercise(
.solution_code = tibble::tibble(x = 1:3, y = letters[x]),
.user_code = tibble::tibble(x = 1:3, y = c("A", "b", "c"))
)
## Grading Tables ----
grade_this_table()(ex)
#> #> grade_this_table()(ex)
#> Error in get(".__tblcheck_grader_args"): object '.__tblcheck_grader_args' not found
#> <tblcheck_graded: [Neutral]
#> A problem occurred with the grading code for this exercise.
#> >
# Roughly equivalent to...
gradethis::grade_this({
gradethis::pass_if_equal()
tbl_grade()
gradethis::fail()
})(ex)
#> <gradethis_graded: [Incorrect]
#> The first 3 values of your `y` column should be `a`, `b`, and
#> `c`, not `A`, `b`, and `c`.
#> >
