将函数内的矩阵保存到父级环境

时间:2019-07-12 02:03:55

标签: r matrix environment

因此,我目前有几个函数,我要修改在函数外部创建的矩阵,以便将其用作函数内部发生的事情的计数变量。该矩阵名为cost_counter,当某些事件在多个函数内部发生时,我想添加该矩阵。但是,我希望该解决方案仍然能够在foreach()中使用并且可并行化。

我知道不推荐使用<<-,但是我不知道如何使用Assign()修改现有矩阵。示例代码如下。我一开始就定义了变量cost_counter。下面的功能可以运行更长的时间,但是我仅将第一部分作为例子来说明正在发生的事情。

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,年龄[i]]错误<<-cost_counter [2,年龄[i]] + 1:   找不到对象“ cost_counter””

我希望能够修改矩阵并使其被识别。

任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:0)

在函数的最后,使用以下命令将函数的矩阵重新分配给全局env:

cost_counter <<- cost_counter