I am trying to generate a set of data points from a Gaussian mixture model. My mixture model is represented by a data frame that looks like this:
> gmm weight mean sd 1 0.3 0 1.0 2 0.2 -2 0.5 3 0.4 4 0.7 4 0.1 5 0.3 I have written the following function that generates the appropriate data: gmm_data <- function(n, gmm) { c(rnorm(n*gmm[1,]$weight, gmm[1,]$mean, gmm[1,]$sd), rnorm(n*gmm[2,]$weight, gmm[2,]$mean, gmm[2,]$sd), rnorm(n*gmm[3,]$weight, gmm[3,]$mean, gmm[3,]$sd), rnorm(n*gmm[4,]$weight, gmm[4,]$mean, gmm[4,]$sd)) } However, the fact that my mixture has four components is hard-coded into this function. A better implementation of gmm_data() would generate data points for an arbitrary number of mixture components (i.e. an arbitrary number of rows in the data frame). How do I do this? I'm sure it's simple, but I can't figure it out. Thanks. -- Bill McNeill http://staff.washington.edu/billmcn/index.shtml ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.