Estimating probability with if condition using R

I'm trying simulation in R, I want to check the probability of the person getting caught with the number of students is 40. but I get this error, Error in if (caught == "TRUE") { : the condition has length > 1. What does this error mean? How can I correct this error? TIA

#Initialise number of students 1:40 
num_of_students <- c(1:40)

#Calculate number of exams tested - round(sqrt(length(number of students)))
num_of_exams_tested <- round(sqrt(length(num_of_students)))

#Initialise caught counter
caught_counter <- 0;

for(i in 10000){
  examschecked <- sample(num_of_students, num_of_exams_tested)
  
#the person didn't read the paper for every 10th student
  examsunmarked <- examschecked/10
 #The examiner will identify an unmarked exam correctly 94% of the time 
  for(i in examsunmarked) {
    caught <- sample(c("TRUE", "FALSE"), prob = c(0.94, 0.06))
    if(caught == "TRUE"){
      caught_counter <- caught_counter + 1;
    }
    return (caught_counter)
  }
}
print((caught_counter/10000) * 100)

The error means that the condition tested in the if() has a length greater than 1, i.e. caught == "TRUE" has a length greater than one. If you run

caught <- sample(c("TRUE", "FALSE"), prob = c(0.94, 0.06))

by itself, you will see that it returns two values. Change it to

caught <- sample(c("TRUE", "FALSE"), prob = c(0.94, 0.06), size = 1)

and the error will not occur.

This topic was automatically closed 21 days after the last reply. New replies are no longer allowed.

If you have a query related to it or one of the replies, start a new topic and refer back with a link.