I believe I gave you sufficient information (the vector of dice roll results would replace 1:36 in my example). Furthermore, this sounds like homework, which we try not to do here. But even if it is not, I expect you to fill in the details based on what I have provided. If I have misunderstood your query, I am sorry: I am too lazy to go through your long explanation. If I have understood correctly, perhaps others will be kinder and provide you the missing details that I did not.
Bert Gunter On Wed, Apr 20, 2022 at 9:02 PM Paul Bernal <paulberna...@gmail.com> wrote: > > Dear friend Bert, > > Thank you so much for your kind reply. The first thing I need to do is to > simulate dice rolls, say 120 times. > > I want to populate an m by 12 dataframe with the results of each dice roll. > For example, the result from dice roll #1 would need to go on row 1, column1, > the result from dice roll #2 would have to go in row 1 column 2, and so on. > > The reason why I want to store those results in a dataframe is to be able to > perform some other calculations afterwards. > > This is for a project I am doing. > > So this is the situation: > You and five friends – a total of six people – plan to meet once per month to > have dinner together, with one of you choosing the restaurant each month. > Rather than scheduling the entire year in advance, you decide to make it > interesting: each month a single six-sided die will be rolled to determine > which of you gets to choose the restaurant that month. How likely is it that > everyone will have a chance to eat at their own favorite restaurant? That is, > what is the probability p that over the next 12 months, each of you will have > had at least one opportunity to choose where to eat? > > This is what I am asked to do: > Write a program to estimate the desired probability p via simulation. The > program should input a sequence of positive integer number of trials to > simulate using the language's pseudorandom number generator and calculate the > corresponding fractions of simulated trials that are “successful" (i.e., all > 6 parties get at least one opportunity to choose where to eat. Alice, Bob, > Charley, Fred, Ellen, Don, Don, Don, Don, Alice, Charley, Bob is a successful > trial. Alice, Bob, Charley, Ellen, Don, Don, Don, Don, Ellen, Alice, Charley, > Bob is not a successful trial since Fred does not get to choose.) > Turn in a set of 10 trials showing each roll of the dice to show correctness. > Label the out-comes. Keep in mind that a single trial requires rolling the > die twelve times. Calculate and print the average probability p for the set. > Please refer to your friends by name. > > For this reason, I am trying to simulate the n trials, and then populate a > table with the results from the trials. I have to simulate a dice roll dice > for each month and for each row. Rows would be equivalent to years, and then > columns would be equivalent to the month of a particular year. > > Once I store the results in a dataframe, everything is much easier. > > I installed package dice and performed simulations by doing: > #declaring variables: > #1)dice_rolls which is the number of times the dice will be rolled > #2)num_dice which is the number of dice that will be rolled each time > #3)dice_sides which is the number of sides of the dice > #function dice will take each one of these variables as its parameter to > perform the simulation > dice_rolls = 120 > num_dice = 1 > dice_sides = 6 > > #performing simulation > dice_simul = dice(rolls = dice_rolls, ndice = num_dice, sides = dice_sides, > plot.it = TRUE) > > I tried the following, but did not work as expected: > > for (i in 1:nrow(dice_simul)){ > for(j in 1:ncol(prob_frame)){ > for(k in 1:nrow(prob_frame)){ > prob_frame[k,j] = dice_simul[i,1] > } > } > } > > I apologize for the long explanation. > > Best regards, > > Paul > > > El mié, 20 abr 2022 a las 22:47, Bert Gunter (<bgunter.4...@gmail.com>) > escribió: >> >> If I understand you correctly, it's simple. >> Matrices in R are vectors with a dimension attribute. By default, they >> are populated column by column. Use 'byrow = TRUE to populate by row >> instead. For example: >> >> > matrix (1:36, ncol = 12, byrow = TRUE) >> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] >> [1,] 1 2 3 4 5 6 7 8 9 10 11 12 >> [2,] 13 14 15 16 17 18 19 20 21 22 23 24 >> [3,] 25 26 27 28 29 30 31 32 33 34 35 36 >> >> I leave it to you to use the 'dimnames' argument of ?matrix to give >> names to the column and then subsequently convert to a data frame if >> you like. >> >> Bert Gunter >> >> "The trouble with having an open mind is that people keep coming along >> and sticking things into it." >> -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip ) >> >> On Wed, Apr 20, 2022 at 8:38 PM Paul Bernal <paulberna...@gmail.com> wrote: >> > >> > Dear friends, >> > >> > Hope you are doing well. I need to simulate a 1 dice roll for each one of >> > the twelve months of the year and perform 100 trials, so I thought of >> > constructing a dataframe with twelve columns and 100 rows the following >> > way: >> > >> > num_rows = 100 >> > >> > prob_frame <- data.frame(matrix(NA, nrow = num_rows, ncol = 12)) >> > colnames(prob_frame)<-c("January","February","March","April","May","June","July","August","September","October","November","December") >> > >> > Now, using the dice package, I can simulate n number of dice rolls as >> > follows: >> > #performing simulation >> > dice_simul = dice(rolls = dice_rolls, ndice = num_dice, sides = dice_sides, >> > plot.it = TRUE) >> > >> > What I would like to do is to populate each column and row with the results >> > of dice_simul. >> > >> > Let me show you the structure of dice_simul: >> > > str(dice_simul) >> > Classes ‘dice’ and 'data.frame': 100 obs. of 1 variable: >> > $ Red: int 2 2 1 2 5 4 4 6 1 4 ... >> > > dput(dice_simul) >> > structure(list(Red = c(2L, 2L, 1L, 2L, 5L, 4L, 4L, 6L, 1L, 4L, >> > 4L, 2L, 6L, 2L, 2L, 1L, 3L, 6L, 1L, 5L, 5L, 5L, 3L, 4L, 2L, 6L, >> > 4L, 6L, 6L, 2L, 1L, 2L, 2L, 6L, 4L, 2L, 3L, 5L, 6L, 6L, 4L, 5L, >> > 4L, 6L, 6L, 3L, 4L, 1L, 5L, 3L, 3L, 5L, 3L, 4L, 1L, 3L, 3L, 2L, >> > 4L, 1L, 2L, 1L, 6L, 3L, 5L, 5L, 3L, 4L, 4L, 5L, 4L, 1L, 5L, 3L, >> > 4L, 4L, 3L, 6L, 5L, 2L, 4L, 1L, 1L, 6L, 4L, 3L, 6L, 5L, 6L, 2L, >> > 6L, 1L, 6L, 6L, 4L, 3L, 4L, 2L, 1L, 5L)), class = c("dice", "data.frame" >> > ), row.names = c(NA, -100L)) >> > >> > For example, the first number of dice_simul should go to row 1 for January, >> > the second number of dice_simul should go to row 1 for February, ... the >> > twelveth number of dice_simul should go to row 1 for December, the 13th >> > number should go to row 2 for january, and so on. >> > >> > This is what I tried to do but doesn´t work they way I want to: >> > >> > #1)dice_rolls which is the number of times the dice will be rolled >> > #2)num_dice which is the number of dice that will be rolled each time >> > #3)dice_sides which is the number of sides of the dice >> > #function dice will take each one of these variables as its parameter to >> > perform the simulation >> > dice_rolls = 100 >> > num_dice = 1 >> > dice_sides = 6 >> > >> > #performing simulation >> > dice_simul = dice(rolls = dice_rolls, ndice = num_dice, sides = dice_sides, >> > plot.it = TRUE) >> > >> > num_rows = 100 >> > >> > prob_frame <- data.frame(matrix(NA, nrow = num_rows, ncol = 12)) >> > colnames(prob_frame) <- >> > c("January","February","March","April","May","June","July","August","September","October","November","December") >> > >> > >> > for (j in 1:12){ >> > for (i in 1:num_rows){ >> > prob_frame[i,j]=dice_simul[i,1] >> > } >> > } >> > I basically want to populate the twelve months for the first row, then the >> > twelve months for the second row, and so on, until I get to populate the >> > twelve months for the last row sequentially. >> > >> > How could I accomplish this? >> > >> > Any help and/or guidance will be greatly appreciated. >> > >> > Best regards, >> > Paul >> > >> > [[alternative HTML version deleted]] >> > >> > ______________________________________________ >> > R-help@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. ______________________________________________ R-help@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.