Turn in one copy for each group. If group members are not present in class they will be required to complete their own lab to receive Sunday, February 18.
This lab focuses on debugging functions that I have “started” for you.
Answer the following questions in this R Markdown document. Please include code where necessary.
Debug the following function, by rewritting the function below and demonstrating that the function calls specified below return the correct answer.
RouletteSpin <- function(num.spins){
  # function that simulates Roulette Spins
  # ARGS: num.spins - number of spins can be encoded as an integer or double,
  #       but must be an integer value
  # Returns: data frame consisting of color (character) and number (double), 
  #          there are 38 possible outcomes with two '0' values (0, 00)
  if (!is.integer(num.spins)) stop('Please enter an integer or double')
  if (!num.spins %% 1 == 0) stop('Please enter an integer or double')
  numbers <- 00:36
  # assume all odds are red
  colors <- c(rep("green",2),rep('red',black,each=18))
  roulette.board <- data.frame(numbers = numbers, colors = colors)
  spin.results <- matrix(0, nrow=num.spins, ncol=2)
  for (i in num.spins)
    spin.results[i,] <- roulette.board[sample(38,1)] 
  return(spin.results)
}
RouletteSpin(4L)## Error in RouletteSpin(4L): object 'black' not foundRouletteSpin(4)## Error in RouletteSpin(4): Please enter an integer or doubleRouletteSpin('4')## Error in RouletteSpin("4"): Please enter an integer or doubleRouletteSpin(4.1)## Error in RouletteSpin(4.1): Please enter an integer or doubleDebug the following function, by rewritting the function below and demonstrating that the function calls specified below return the correct answer. For a short video of the Monty Hall problem see from 21 with Kevin Spacey or from numb3rs tv show.
MontyHallMonteCarlo <- function(num.sims, print){
  # Function to simulate Monty Hall winning probability when switching doors
  # ARGS: number of simulations (as integer or double), print command
  #       that accepts TRUE or FALSE as to whether to print simulation results
  # Returns: list containing winning probability and (if print = TRUE)
  #          vector of results with strings "Win" or "Lose" for each simulation
  if (!num.spins %% 1 == 0) stop('Please enter an integer or double')
  results <- rep(FALSE,num.sims)
  for (i in 1:num.sims){
    # randomly choose door with car
    car.door <- sample(3,1)
    # randomly choose door for participant to select
    select.door <- sample(1,3)
    # you win when switching if the door with a car is not the
    # one you initally selected
    if (car.door = select.door) {
      results <- FALSE
    }
  }
  win.prob <- mean(results)
  ifelse(print, return(list(win.prob,results)),return(list(win.prob))
}
MonteHallMonteCarlo(8.1,print=T)
MonteHallMonteCarlo('8.1',print=T)
MonteHallMonteCarlo(8,print=T)
MonteHallMonteCarlo(10000,print=F)## Error: <text>:16:18: unexpected '='
## 15:     # one you initally selected
## 16:     if (car.door =
##                      ^