Write S7 class definitions and methods for rctbayespower. Use when creating new S7 classes, adding properties, defining validators, registering methods, or setting up S3 compatibility.
#' @importFrom S7 new_class class_character class_numeric new_property new_union
rctbp_classname <- S7::new_class(
"rctbp_classname",
properties = list(
# Simple typed property
name = S7::class_character,
# Property with default
count = S7::new_property(S7::class_numeric, default = 0),
# Nullable property (union with NULL)
optional = S7::class_character | NULL,
# Property with setter validation (rctbayespower style)
backend = S7::new_property(
class = S7::class_character,
default = "brms",
setter = function(self, value) {
if (!value %in% c("brms", "bf")) {
cli::cli_abort(c(
"{.arg backend} must be 'brms' or 'bf'",
"x" = "You supplied {.val {value}}"
))
}
self@backend <- value
self
}
)
),
validator = function(self) {
if (self@count < 0) return("'count' must be non-negative.")
NULL
}
)
| Type | Usage |
|---|---|
S7::class_character | Character vector |
S7::class_numeric | Numeric (double or integer) |
S7::class_double | Double only |
S7::class_integer | Integer only |
S7::class_logical | Logical |
S7::class_list | List |
S7::class_function | Function |
S7::class_any | Any type (use sparingly) |
Type | NULL | Nullable (union) |
All S7 classes use rctbp_* prefix: rctbp_design, rctbp_conditions, rctbp_power_analysis
For detailed patterns, see: