Ошибка цикла R — for: «Неожиданный ‘}’ в ‘}'»

#r #for-loop #if-statement #simulation

#r #for-цикл #if-оператор #Симуляция

Вопрос:

вот код для симуляции, которую я пытаюсь запустить:

 n_draws <- 1000

black <- rep(0, n_draws)
hispanic <- rep(0, n_draws)
asian <- rep(0, n_draws)
white <- rep(0, n_draws)


cutoff <- c(0.05,0.1,0.25,1)
draws <- runif(n_draws,0,1)

for (i in draws){
  
  if (draws[i] < cutoff[1]){
    
    black[i] <- 1
    
  } else if ((draws[i] >= cutoff[1]) amp; (draws[i] < cutoff[2])){
    
    hispanic[i] <- 1
    
  } else if ((draws[i] >= cutoff[2]) amp; (draws[i] < cutoff[3]){
    
    asian[i] <- 1
    
  } else {

white[i] <- 1

 }
}
  

В принципе, я хочу добавить 1 в соответствующий список при условии, что это число попадает в диапазон (0,1). Я не уверен, почему это выдает ошибку. Предложения?

Ответ №1:

Вы просто пропускаете закрывающую скобку сразу после cutoff[3] , также использованную seq_along в моем примере, поскольку она немного приятнее

 for (i in seq_along(draws)){
  
  if (draws[i] < cutoff[1]){
    
    black[i] <- 1
    
  } else if ((draws[i] >= cutoff[1]) amp; (draws[i] < cutoff[2])){
    
    hispanic[i] <- 1
    
  } else if ((draws[i] >= cutoff[2]) amp; (draws[i] < cutoff[3])){
    
    asian[i] <- 1
    
  } else {
    
    white[i] <- 1
    
  }
}
  

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

1. потрясающе, спасибо! Я не слышал о seq_along раньше, поэтому я проверю это