【问题标题】:Saving Matrix within Function to Parent Environment将函数内的矩阵保存到父环境
【发布时间】:2019-07-12 02:03:55
【问题描述】:

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

我知道不推荐使用

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]]

我希望能够修改矩阵,并让它被识别。

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

【问题讨论】:

  • 不仅不推荐&lt;&lt;-,更重要的是需要它的方法(正是你想要做的,即修改函数范围之外的对象)。

标签: r matrix environment


【解决方案1】:

就在函数的最后,函数将函数的矩阵重新分配给全局环境,使用:

cost_counter <<- cost_counter

【讨论】:

  • 这个剂量似乎有帮助,因为问题是当首先调用矩阵时,由于返回终止它,下游的任何内容都可能不会被迭代。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-15
  • 2017-03-24
  • 1970-01-01
  • 1970-01-01
  • 2020-07-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多