Для L oop создает вектор, когда я хочу скаляр - PullRequest
0 голосов
/ 10 марта 2020

Если вы изучите приведенный ниже код, я пытаюсь запустить симуляцию, в которой данные отбираются каждый год в течение 10 лет для 100 заказов. Моделирование работает нормально в течение первых 10 лет порядка 1, но когда дело доходит до порядка 2, оно привязывает значение к порядку 1, то есть создает вектор, а не дает мне скаляр. Это портит мой вывод, и я не знаю, как это исправить.

dat <- data.frame(cbind(rnorm(30,600,sd=100),rnorm(30,300,sd=50),rnorm(30,200,sd=50),rnorm(30,600,sd=100)))
colnames(dat) <- c("unused","apr","oct","used")

  unused <- NULL
  deduct <- NULL
  carryover <- NULL
  used <- NULL
  apr <- NULL
  oct <- NULL
  available <- NULL

  #_____________________________________ Sample Data _____________________________________________________
  for (i in 1:100) {   #increment for orders
    for (k in 1:10){   #increment for years
      if(k==1) {
        subsample <- dat[sample(seq_along(dat[, 1]), size = 1,replace=TRUE), c("unused", "apr","oct","used")]
      } else {
        subsample <- dat[sample(seq_along(dat[, 1]), size = 1,replace=TRUE), c("apr","oct","used")]
      }
      if (k==1) unused[i] <-subsample$unused
      apr[i] <- subsample$apr
      oct[i] <- subsample$oct
      used[i] <- subsample$used
      #print(subsample)
      #_____________________________________ Use Data _____________________________________________________
      if (unused[i] > 200) {
        deduct[i] <- unused[i]-200
        carryover[i] <- 200
        available[i] <- carryover[i]+apr[i]+oct[i]
      }

      if (unused[i] <= 200) {
        deduct[i] <- 0
        carryover[i] <- unused[i]
        available[i] <- carryover[i]+apr[i]+oct[i]
      }

      #_____________________________________ Create unused for next year _______________________________
      unused <- available-used

    }
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...