Generate data
Generate data from a single row in the design input (see runSimulation). R contains
numerous approaches to generate data, some of which are contained in the base package, as well
as in SimDesign (e.g., rmgh, rValeMaurelli, rHeadrick).
However the majority can be found in external packages. See CRAN's list of possible distributions here:
https://CRAN.R-project.org/view=Distributions. Note that this function technically
can be omitted if the data generation is provided in the Analyse step, though
in general this is not recommended.
Generate(condition, fixed_objects = NULL)
| condition | a single row from the  | 
| fixed_objects | object passed down from  | 
The use of try functions is generally not required in this function because Generate
is internally wrapped in a try call. Therefore, if a function stops early
then this will cause the function to halt internally, the message which triggered the stop
will be recorded, and Generate will be called again to obtain a different dataset.
That said, it may be useful for users to throw their own stop commands if the data
should be re-drawn for other reasons (e.g., an estimated model terminated correctly but the maximum number of
iterations were reached).
returns a single object containing the data to be analyzed (usually a
vector, matrix, or data.frame),
or list
Chalmers, R. P., & Adkins, M. C.  (2020). Writing Effective and Reliable Monte Carlo Simulations
with the SimDesign Package. The Quantitative Methods for Psychology, 16(4), 248-280.
doi: 10.20982/tqmp.16.4.p248
Sigal, M. J., & Chalmers, R. P. (2016). Play it again: Teaching statistics with Monte
Carlo simulation. Journal of Statistics Education, 24(3), 136-156.
doi: 10.1080/10691898.2016.1246953
## Not run: 
generate <- function(condition, fixed_objects = NULL) {
    N1 <- condition$sample_sizes_group1
    N2 <- condition$sample_sizes_group2
    sd <- condition$standard_deviations
    group1 <- rnorm(N1)
    group2 <- rnorm(N2, sd=sd)
    dat <- data.frame(group = c(rep('g1', N1), rep('g2', N2)),
                      DV = c(group1, group2))
    # just a silly example of a simulated parameter
    pars <- list(random_number = rnorm(1))
    list(dat=dat, parameters=pars)
}
# similar to above, but using the Attach() function instead of indexing
generate <- function(condition, fixed_objects = NULL) {
    Attach(condition)
    N1 <- sample_sizes_group1
    N2 <- sample_sizes_group2
    sd <- standard_deviations
    group1 <- rnorm(N1)
    group2 <- rnorm(N2, sd=sd)
    dat <- data.frame(group = c(rep('g1', N1), rep('g2', N2)),
                      DV = c(group1, group2))
    dat
}
generate2 <- function(condition, fixed_objects = NULL) {
    mu <- sample(c(-1,0,1), 1)
    dat <- rnorm(100, mu)
    dat        #return simple vector (discard mu information)
}
generate3 <- function(condition, fixed_objects = NULL) {
    mu <- sample(c(-1,0,1), 1)
    dat <- data.frame(DV = rnorm(100, mu))
    dat
}
## End(Not run)Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.