简体   繁体   中英

function generating NA in R

I need help, my function not work correctly when i try make any sum with the results. have a lot of NA values and I don't know why.

Craps <- function(jogadas){
   for (i in 1:jogadas){
    
    comeOut <- sample(1:6,1)+ sample(1:6,1)
    
    if(comeOut %in% c(2,3,12)){
      
      result <- F #False
      
    }else if(comeOut %in% c(7,11)){
      
      
    }
    else{
      
      dados <- sample(1:6,1) + sample(1:6,1)
      
      if(dados == 7){
        result <- F
      }else {
        result <- T
      }
      while (!(dados %in% c(7,comeOut))){
        dados <- sample(1:6,1)+ sample(1:6,1)
        
      }
      if(dados == 7)
        result <- F
        
      else result <- T
     
    }
    print(result)
    #probability
    prob<-NULL
    prob[i] <- result
    prob2<-sum(prob)/jogadas
    print(prob2)
   }  
  }
Craps(1000)

You put prob=NULL inside your loop, so it will become NULL at each iteration of the loop, just create prob before the loop. Also you forgot one line as noticed in the comments:

Craps <- function(jogadas){
  prob<-NULL
  for (i in 1:jogadas){
    
    comeOut <- sample(1:6,1)+ sample(1:6,1)
    
    if(comeOut %in% c(2,3,12)){
      
      result <- F #False
      
    }else if(comeOut %in% c(7,11)){
      result <- T
      
    }
    else{
      
      dados <- sample(1:6,1) + sample(1:6,1)
      
      if(dados == 7){
        result <- F
      }else {
        result <- T
      }
      while (!(dados %in% c(7,comeOut))){
        dados <- sample(1:6,1)+ sample(1:6,1)
        
      }
      if(dados == 7)
        result <- F
      
      else result <- T
      
    }
    print(result)
    #probability
    
    prob[i] <- result
    prob2<-sum(prob)/jogadas
    print(prob2)
  }  
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM