enable input of a vector of parameters through the `time_pars` functionality
In the age-structured model, if a parameter is input as a vector in the params list (where the vector length is equal to the number of age groups specified), it is treated as age-structured in the simulator. Currently, when inputting time-varying parameters, be it in run_sim or calibrate, we're passing them in a data.frame (with columns Date | Symbol | Value | Type). I'm not sure if we can perhaps set up the Value column as a list-col to pass in an age-structured vector...?
Either way, it would be good to have this functionality. One use-case is passing time-varying and age-structured vaccination rates.
I'm not thrilled about the idea of list-columns. (As previously stated I would like to avoid tidyverse constructs wherever possible, because (1) I'm less familiar with them; (2) they don't necessarily interoperate smoothly with base-R constructs in all cases; (3) tidyverse APIs tend to be less stable; (4) tidyverse encourages use of non-standard evaluation, which can be difficult; (5) lots of package dependencies ...) I would rather use the symbol names to provide the information about which categorie(s) the parameter refers to. When we unlist() a complex object, the names of the flattened object typically provide unambiguous information about the position of each element in the original structure.
Oh, I wasn't suggesting tidyverse list-cols. I think it's possible in base R, but it may not be the most user-friendly? I agree with your reasons for avoiding tidyverse in core package functionality.
We could certainly encode the subcategory info in the Symbol column (maybe using a separator other than _, which is already used in some param names) and then unpack age-structured params carefully in the sim code. I don't need this feature immediately, but the idea came up while I was meeting with DE today, so I thought I'd note it here.