Your approach is correct.
For each sample from your mixed distribution you just need to choose which of the two component Gaussian distributions the sample should come from and then draw the sample from that distribution.
You can choose between the two distributions using the mixture proportions you have found: simulate a random number between 0 and 1 and sample from the first distribution if it the random number is less than the first proportion, otherwise sample from the second distribution.
Finally, sample from the relevant Gaussian distribution using the rnorm function.
dat.demand2050.mixmdl.prop=c(0.2783939,0.7216061)
dat.demand2050.mixmdl.means=c(56.21150,73.08389)
dat.demand2050.mixmdl.dev=c(3.098292,6.413906)
sampleMixture=function(prop,means,dev){
# Generate a uniformly distributed random number between 0 and 1
# in order to choose between the two component distributions
distTest=runif(1)
if(distTest<prop[1]){
# Then sample from the first component of the mixture
sample=rnorm(1,mean=means[1],sd=dev[1])
}else{
# Sample from the second component of the mixture
sample=rnorm(1,mean=means[2],sd=dev[2])
}
return(sample)
}
# Generate a single sample
sampleMixture(dat.demand2050.mixmdl.prop,dat.demand2050.mixmdl.means,dat.demand2050.mixmdl.dev)
# Generate 100 samples and plot resulting distribution
samples=replicate(100,sampleMixture(dat.demand2050.mixmdl.prop,dat.demand2050.mixmdl.means,dat.demand2050.mixmdl.dev))
plot(density(samples))