This function is automatically run as part of dv_read if extra_validation is greater than zero.
The current validation messages/checks are:
- message "The total of the [home|visiting] team scores in the match result summary (x$meta$result) does not match the total number of points recorded for the [home|visiting] team in the plays data" 
- message "Players xxx and yyy have the same player ID": player IDs should be unique, and so duplicated IDs will be flagged here 
- message "The listed player is not on court in this rotation": the player making the action is not part of the current rotation. Libero players are ignored for this check 
- message "Back-row player made an attack from a front-row zone": an attack starting from zones 2-4 was made by a player in the back row of the current rotation 
- message "Front-row player made an attack from a back-row zone (legal, but possibly a scouting error)": an attack starting from zones 1,5-9 was made by a player in the front row of the current rotation 
- message "Quick attack by non-middle player" 
- message "Middle player made a non-quick attack" 
- message "Block by a back-row player" 
- message "Winning serve not coded as an ace" 
- message "Non-winning serve was coded as an ace" 
- message "Serving player not in position 1" 
- message "Player designated as libero was recorded making a [serve|attack|block]" 
- message "Attack (which was blocked) does not have number of blockers recorded" 
- message "Attack (which was followed by a block) has 'No block' recorded for number of players" 
- message "Repeated row with same skill and evaluation_code for the same player" 
- message "Consecutive actions by the same player" 
- message "Point awarded to incorrect team following error (or \"error\" evaluation incorrect)" 
- message "Point awarded to incorrect team (or [winning play] evaluation incorrect)" 
- message "Scores do not follow proper sequence": one or both team scores change by more than one point at a time 
- message "Visiting/Home team rotation has changed incorrectly" 
- message "Player lineup did not change after substitution: was the sub recorded incorrectly?" 
- message "Player lineup conflicts with recorded substitution: was the sub recorded incorrectly?" 
- message "Reception type does not match serve type": the type of reception (e.g. "Jump-float serve reception" does not match the serve type (e.g. "Jump-float serve") 
- message "Reception start zone does not match serve start zone" 
- message "Reception end zone does not match serve end zone" 
- message "Reception end sub-zone does not match serve end sub-zone" 
- message "Attack type ([type]) does not match set type ([type])": the type of attack (e.g. "Head ball attack") does not match the set type (e.g. "High ball set") 
- message "Block type ([type]) does not match attack type ([type])": the type of block (e.g. "Head ball block") does not match the attack type (e.g. "High ball attack") 
- message "Dig type ([type]) does not match attack type ([type])": the type of dig (e.g. "Head ball dig") does not match the attack type (e.g. "High ball attack") 
- message "Multiple serves in a single rally" 
- message "Multiple receptions in a single rally" 
- message "Serve (that was not an error) did not have an accompanying reception" 
- message "Rally had ball contacts but no serve" 
Usage
validate_dv(x, validation_level = 2, options = list(), file_type)Arguments
- x
- datavolley: datavolley object as returned by - dv_read
- validation_level
- numeric: how strictly to check? If 0, perform no checking; if 1, only identify major errors; if 2, also return any issues that are likely to lead to misinterpretation of data; if 3, return all issues (including minor issues such as those that might have resulted from selective post-processing of compound codes) 
- options
- list: named list of options that control optional validation behaviour. Valid entries are: - setter_tip_codes character: vector of attack codes that represent setter tips (or other attacks that a back-row player can validly make from a front-row position). If you code setter tips as attacks, and don't want such attacks to be flagged as an error when made by a back-row player in a front-row zone, enter the setter tip attack codes here. e.g. - options=list(setter_tip_codes=c("PP","XY"))
 
- file_type
- string: "indoor" or "beach". If not provided, will be taken from the - x$file_meta$file_formatentry
Value
data.frame with columns message (the validation message), file_line_number (the corresponding line number in the DataVolley file), video_time, and file_line (the actual line from the DataVolley file).
Examples
if (FALSE) {
  x <- dv_read(dv_example_file(), insert_technical_timeouts = FALSE)
  xv <- validate_dv(x)
  ## specifying "PP" as the setter tip code
  ## front-row attacks (using this code) by a back-row player won't be flagged as errors
  xv <- validate_dv(x, options = list(setter_tip_codes = c("PP"))) 
}
