better loop for simulation
use replicate:
stud.score <- function(n.questions, mult.choice = 2) {
+ prob.success <- 1 / mult.choice + answers <- (runif(n.questions) < prob.success) + return(sum(answers)) + }
# create 1000 results result <- replicate(1000, stud.score(10)) # look at histogram stem(result)
The decimal point is at the | 0 | 0 1 | 0000000000000 2 | 000000000000000000000000000000000000000000000000000000000 3 | 00000000000000000000000000000000000000000000000000000000000000000000+26 4 | 00000000000000000000000000000000000000000000000000000000000000000000+116 5 | 00000000000000000000000000000000000000000000000000000000000000000000+153 6 | 00000000000000000000000000000000000000000000000000000000000000000000+142 7 | 00000000000000000000000000000000000000000000000000000000000000000000+35 8 | 00000000000000000000000000000000000000000000 9 | 000000000000 10 | 0 Jim Holtman Data Munger Guru What is the problem that you are trying to solve? Tell me what you want to do, not how you want to do it. On Sat, Jun 18, 2016 at 6:12 PM, Naresh Gurbuxani <
naresh_gurbuxani at hotmail.com> wrote:
I want to calculate a function many times over. My solution below works,
but does not seem very elegant.
# my function to run many times over
stud.score <- function(n.questions, mult.choice = 2) {
prob.success <- 1 / mult.choice
answers <- (runif(n.questions) < prob.success)
return(sum(answers))
}
# my method to run above function 1000 times and store results
count.df <- data.frame(n.count = rep(10, 1000))
scores.df <- apply(count.df, 1, function(x) return(stud.score(x)))
Creating a data frame just to repeat the the count seems wasteful. How
can I generate scores.df without count.df?
Thanks,
Naresh
______________________________________________ R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.