#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
раньше, поэтому я проверю это