Automatically grade a vector resulting from student code using
gradethis::grade_this() and vec_grade() to compare the
student's result with the author's solution.
Usage
grade_this_vector(
correct = NULL,
pre_check = NULL,
post_check = NULL,
pass_if_equal = TRUE,
...,
max_diffs = 3,
check_class = TRUE,
ignore_class = NULL,
check_length = TRUE,
check_values = TRUE,
check_names = TRUE,
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
[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.- 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 print. Defaults to 3.- check_class
[logical(1)]
Whether to check thatobjectandexpectedhave the same classes.- 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_length
[logical(1)]
Whether to check thatobjectandexpectedhave the same length.- check_values
[logical(1)]
Whether to check thatobjectandexpectedcontain the same values.- check_names
[logical(1)]
Whether to check thatobjectandexpectedhave the same names.- 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_table()
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 Vectors ----
# Here we use `pre_check` to modify `.result` and
grade_this_vector(
pre_check = {
.result <- .result$y
.solution <- .solution$y
}
)(ex)
#> #> grade_this_vector(pre_check = {
#> #> .result <- .result$y
#> #> .solution <- .solution$y
#> #> })(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({
.result <- .result$y
.solution <- .solution$y
gradethis::pass_if_equal()
vec_grade()
gradethis::fail()
})(ex)
#> <gradethis_graded: [Incorrect]
#> The first 3 values of your result should be `a`, `b`, and `c`,
#> not `A`, `b`, and `c`.
#> >
