функция, генерирующая NA в R

#r

Вопрос:

Мне нужна помощь, моя функция работает неправильно, когда я пытаюсь подвести какую — либо сумму с результатами. у меня много ценностей NA, и я не знаю почему.

 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)
 

Комментарии:

1. Я полагаю, что вы отсутствуете result <- T в разделе, следующем за строкой }else if(comeOut %in% c(7,11)){

2. Я случайно удалил этот фрагмент

Ответ №1:

Вы помещаете prob=NULL его в свой цикл, чтобы он становился нулевым на каждой итерации цикла, просто создайте prob его перед циклом. Также вы забыли одну строчку, как заметили в комментариях :

 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)
  }  
}