Сохранение матрицы в функции в родительской среде - PullRequest
0 голосов
/ 12 июля 2019

Итак, в настоящее время у меня есть несколько функций, в которых я хочу изменить матрицу, созданную вне функции, чтобы использовать ее в качестве переменной подсчета для вещей, происходящих внутри функции.Матрица называется cost_counter, и я хочу добавить ее, когда определенные события происходят внутри нескольких функций.Тем не менее, я бы хотел, чтобы решение все-таки можно было использовать в foreach () и быть параллелизуемым.

Я знаю, что использование << - не рекомендуется, однако я не могу понять, как использовать assign () для изменения существующей матрицы.Пример кода приведен ниже.Я определил переменную cost_counter в начале.Функция ниже длится дольше, но я просто включаю первую часть для примера того, что происходит.</p>

cost_counter <<- matrix(0,nrow = 2, ncol = 12*15)
I0 <- function(){
if (screen[i] == 1){
  cost_counter[2,ages[i]] <<- 1 + cost_counter[2,ages[i]] + 1
  if(HIV[i] == 1){
    if(ages[i] > 35){
      if(pv[(i-min_i+1),1] < (1-specP3)){
        cost_counter[1,ages[i]] <<- cost_counter[1,ages[i]] + 1
        if(contact[i] == 1){return(c(5,0))}
      }
    }

При запуске сообщение об ошибке просто говорит: «Ошибка в cost_counter [2, ages [i]] << - cost_counter [2, ages [i]] + 1: объект 'cost_counter' не найден"</p>

Мне бы хотелось иметь возможность изменить матрицу, чтобы она была распознана.

Любая помощь будет принята с благодарностью.Спасибо!

1 Ответ

0 голосов
/ 12 июля 2019

только в конце f функция повторно назначает матрицу функции глобальному env, используя:

cost_counter <<- cost_counter
...