Skip to contents

This function evaluates the validity of a safeframe object by checking the object class, its labels, and the types of variables. It combines validation checks made by validate_types() and validate_labels(). See 'Details' section for more information on the checks performed.

Usage

validate_safeframe(x, ...)

Arguments

x

a safeframe object

...

<dynamic-dots> A named list with variable names in x as list names and the related types as list values.

Value

If checks pass, a safeframe object; otherwise issues an error.

Details

The following checks are performed:

  • x is a safeframe object

  • variables in x have a well-formed label attribute

  • variables correspond to the specified types

See also

Examples


## create a valid safeframe
x <- cars |>
  make_safeframe(
    speed = "Miles per hour",
    dist = "Distance in miles"
  )
x
#> 
#> // safeframe object
#>    speed dist
#> 1      4    2
#> 2      4   10
#> 3      7    4
#> 4      7   22
#> 5      8   16
#> 6      9   10
#> 7     10   18
#> 8     10   26
#> 9     10   34
#> 10    11   17
#> 11    11   28
#> 12    12   14
#> 13    12   20
#> 14    12   24
#> 15    12   28
#> 16    13   26
#> 17    13   34
#> 18    13   34
#> 19    13   46
#> 20    14   26
#> 21    14   36
#> 22    14   60
#> 23    14   80
#> 24    15   20
#> 25    15   26
#> 26    15   54
#> 27    16   32
#> 28    16   40
#> 29    17   32
#> 30    17   40
#> 31    17   50
#> 32    18   42
#> 33    18   56
#> 34    18   76
#> 35    18   84
#> 36    19   36
#> 37    19   46
#> 38    19   68
#> 39    20   32
#> 40    20   48
#> 41    20   52
#> 42    20   56
#> 43    20   64
#> 44    22   66
#> 45    23   54
#> 46    24   70
#> 47    24   92
#> 48    24   93
#> 49    24  120
#> 50    25   85
#> 
#> labelled variables:
#>  speed - Miles per hour
#>  dist - Distance in miles 

## validation
validate_safeframe(x,
  speed = c("numeric", "factor"),
  dist = "numeric"
)
#> 
#> // safeframe object
#>    speed dist
#> 1      4    2
#> 2      4   10
#> 3      7    4
#> 4      7   22
#> 5      8   16
#> 6      9   10
#> 7     10   18
#> 8     10   26
#> 9     10   34
#> 10    11   17
#> 11    11   28
#> 12    12   14
#> 13    12   20
#> 14    12   24
#> 15    12   28
#> 16    13   26
#> 17    13   34
#> 18    13   34
#> 19    13   46
#> 20    14   26
#> 21    14   36
#> 22    14   60
#> 23    14   80
#> 24    15   20
#> 25    15   26
#> 26    15   54
#> 27    16   32
#> 28    16   40
#> 29    17   32
#> 30    17   40
#> 31    17   50
#> 32    18   42
#> 33    18   56
#> 34    18   76
#> 35    18   84
#> 36    19   36
#> 37    19   46
#> 38    19   68
#> 39    20   32
#> 40    20   48
#> 41    20   52
#> 42    20   56
#> 43    20   64
#> 44    22   66
#> 45    23   54
#> 46    24   70
#> 47    24   92
#> 48    24   93
#> 49    24  120
#> 50    25   85
#> 
#> labelled variables:
#>  speed - Miles per hour
#>  dist - Distance in miles 

## the below issues an error
## note: tryCatch is only used to avoid a genuine error in the example
tryCatch(validate_safeframe(x,
  speed = c("numeric", "factor"),
  dist = "factor"
), error = paste)
#> [1] "Error: Some labels have the wrong class:\n  - dist: Must inherit from class 'factor', but has class 'numeric'\n\n"