Применение цикла for для нескольких векторов - PullRequest
3 голосов
/ 08 апреля 2019

Я пытаюсь повторить цикл for, где вызываются 3 разных вектора. Более конкретно, я пытаюсь посмотреть, сколько времени требуется различным сайтам для достижения их пропускной способности. По сути, я хочу определить, сколько времени понадобится различным группам населения для достижения их соответствующей пропускной способности.

На данный момент, я настроил его для успешной печати содержания на разных временных шагах.

tspan <- 80
N <- matrix(0,tspan,1)
N[1] <- 20
K <- 13626
r <- 0.32

for (t in 2:tspan){
    N[t] <- N[t-1]*exp(r*(1-N[t-1]/K))
    print(N)
  }

Хотя даже это приводит к выводу того же вектора, распечатанного N = tspan. Конечной целью здесь является повторение вышеуказанного цикла for для вектора с различными значениями K:

K<-c(208, 543, 557, 831, 831, 878, 933, 970, 1022, 1039)

и затем сохраните все эти данные во фрейме данных. Я пытался использовать вложенный цикл for, но я не уверен, как это сделать, так как все необходимые значения являются ссылками в уравнении 1. Любая помощь будет принята с благодарностью.

1 Ответ

2 голосов
/ 08 апреля 2019

Вы можете использовать sapply

K <- c(208, 543, 557, 831, 831, 878, 933, 970, 1022, 1039)
out <- sapply(K, function(x) {
  for (t in 2:tspan){
    N[t] <- N[t-1]*exp(r*(1-N[t-1]/x))
  } #                              ^ note the x instead of K here 
  N
})

Результат

head(as.data.frame(out))
#        V1       V2       V3       V4       V5       V6       V7       V8       V9      V10
#1 20.00000 20.00000 20.00000 20.00000 20.00000 20.00000 20.00000 20.00000 20.00000 20.00000
#2 26.70800 27.21983 27.22790 27.33125 27.33125 27.34252 27.35427 27.36143 27.37062 27.37342
#3 35.29968 36.88868 36.91432 37.24457 37.24457 37.28077 37.31856 37.34160 37.37119 37.38022
#4 46.04258 49.70798 49.76899 50.56016 50.56016 50.64751 50.73882 50.79455 50.86620 50.88810
#5 59.07051 66.47804 66.60632 68.28529 68.28529 68.47241 68.66838 68.78819 68.94243 68.98963
#6 74.28092 88.03152 88.28178 91.59706 91.59706 91.97116 92.36397 92.60462 92.91501 93.01011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...