尝试将值分配给R中的矩阵时出错

时间:2019-12-22 13:39:42

标签: r matrix simulation

这是我完整的代码:


N_trials <- 1000
N_steps <- 1000
destinations <- matrix[NA, nrow=N_trials, ncol=N_steps]
l1_distance <- numeric(N)


for(m in 1:N_trials) {
  destination <- c(0,0)
  for(n in 1:N_steps) {
    if(runif(1) < 1/4) {
      destination[1] <- destination[1] - 1
    }
    else if(runif(1) < 1/2) {
      dstination[1] <- destination[1] + 1
    }
    else if(runif(1) < 3/4) {
      dstination[2] <- destination[2] + 1
    }
    else if(runif(1) < 1) {
      dstination[2] <- destination[2] - 1
    }
  }
  destinations[[m,1]] <- destination[1]
  destinations[[m,2]] <- destination[2]


l1_distance <- abs(destinations[N_trials][1]) + abs(destinations[N_trials][2])

}

print(mean(l1_distance))

从本质上讲,destination是一个向量(0,0),以1/4的概率向N_steps迭代移动到相邻的正方形(以l ^ 1度量)。 destinationsdestination中的每个n记录1:N_trials的结果,以便为destination计算一个点估计。

但是,我遇到了错误

  

矩阵[NA,nrow = N_trials,ncol = N_steps]中的错误:     类型为'closure'的对象不可子集

我不知道此错误是什么意思或如何解决。我要做的就是根据directions[m][1]directions[m][2]的结果更新destination[1]destination[2]的值。我是否错误地定义了矩阵destinations

1 个答案:

答案 0 :(得分:2)

将矩阵的初始化更改为matrix(NA, nrow=N_trials, ncol=N_steps)