Как сделать расчет обратной связи l oop в r, чтобы один результат влиял на другой? - PullRequest
0 голосов
/ 31 января 2020

У меня трудности с построением обратной связи на основе временных рядов l oop в R. Так как набор данных слишком велик, трудно поделиться своим кодом здесь. Короче, у меня переменная «акция» рассчитывается ежегодно и на основе винтажа для возраста 1:30. Как только у меня будет результат годового запаса, мне нужно рассчитать «продажи» за год. Тогда продажи за год будут равны винтажу [age1] в следующем году. Это последовательный расчет с разными переменными. Я не мог найти способ, которым R может автоматически обновлять результаты с обновленными входами. Любые мысли будут высоко оценены!

Вот пример вопроса

vintage<-data.frame("Year"=c(1980:2030))
for (i in 1:nrow(vintage)){
 for (j in 2:31){
  vintage[i,j]=runif(1,min=19000,max=500000)
  colnames(vintage)[j]=paste("age_",j-1)
   }
  }
replacement<-vintage["Year"]
 for(i in 1:nrow(replacement)){
  for (j in 2:32){
   replacement[i,j]=runif(1,min=0,max=1)
   colnames(replacement)[j]=paste("age_",j-1)
   }
  }
replacement_distribution<-vintage["Year"]
 for (i in 1:nrow(replacement_distribution)){
  for (j in 2:31){
   replacement_distribution[i,j]=vintage[i,j]*replacement[i,j+1]
  }
 }
for (i in 1:nrow(vintage)){
 for(j in 2:31){
   if(j==2){
    vintage[i,j]=(rowSums(replacement_distribution[i- 
     1,c(2:31)])+rowSums(vintage[i-1,c(2:31)]))/5
     }
      else{
       vintage[i,j]=vintage[i-1,j-1]*(1-replacement[i,j])
    }
   }
  }

, как вы можете видеть, этот код является длинным и не работает. Я хочу обновить два кадра данных в последовательном порядке. То есть, как только будет рассчитано распределение урожая в 1980 году, распределение замены для этого года будет рассчитано на основе этого результата. Затем результаты этих двух будут введены в вычисление age1 в 1981 году. Я попробовал несколько методов (sapply / lapply), но они сделали все вычисления одновременно, поэтому результаты не совпадают.

...