R随机游走的极限矩阵

问题描述

我有以下用于随机游走的代码,其中我从i开始,并逐行累加。

但是,我需要限制每行的随机游走。我想到的一种方法是从每行的索引j(位置的值小于或等于0或大于或等于t)开始,将其替换为null

simulate_binomial = function(cenarios,rodadas,p){
  return(matrix(data=rbinom(cenarios*rodadas,1,p),nrow=cenarios,ncol=rodadas))
}

i = 2
t = 10
p = 0.8

max_walk = 100

samples = simulate_binomial(1000,max_walk,p)

samples[samples==0] = -1

walk = t(apply(cbind(i,samples),cumsum))
walk1 = apply(walk,function(x) (which((x <= 0) | (x >= t))[1]))

因此,我的walk1将是每行的索引,该索引的值小于或等于零或大于或等于t。但是,我不知道如何为行中的该索引开始分配null。

我的意图是分配空值,以便我可以精确地绘制出没有该空值部分的图形,并查看每行/“场景”上的废墟效果

有人可以帮助我吗?

解决方法

您可以将最后一个apply更改为:

walk1 <- t(apply(walk,1,function(x) {
             inds <- (which((x <= 0) | (x >= t))[1])
             x[(inds+1):length(x)] <- NA
             x
          }))