This helper function constructs a timeline where the order of test elements (or blocks of test elements) is determined at run time.

randomise_at_run_time(
  label,
  logic,
  save_order = function(order, state, ...) save_result(state, label, order)
)

Arguments

label

(Character scalar) A label for storing the generated order of test elements.

logic

List where each top-level element corresponds to a randomisation unit. These randomisation units may be either single test elements, lists of test elements, or timelines.

save_order

A function called at run time to save the result of get_order. It should accept three arguments: order, state, and .... order corresponds to the output of get_order, whereas state corresponds to the participant's state object. The default setting saves the generated order in psychTestR's default results repository, under the label label.

Value

A list of test elements or equivalently a timeline that can be combined with other test elements or timelines. These test elements will be presented in a freshly randomised order for each participant.

Note

This function can be nested arbitrarily many times.

Examples

if (FALSE) { join( randomise_at_run_time( "main", list( randomise_at_run_time( "1", list(one_button_page("1a"), one_button_page("1b"), one_button_page("1c")) ), randomise_at_run_time( "2", list(one_button_page("2a"), one_button_page("2b"), one_button_page("2c")) ), randomise_at_run_time( "3", list(one_button_page("3a"), one_button_page("3b"), one_button_page("3c")) ) ) ) ) %>% join(final_page("End")) %>% make_test() }