首页 > 解决方案 > 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), 1, cumsum))
walk1 = apply(walk, 1, function(x) (which((x <= 0) | (x >= t))[1]))

所以 mywalk1将是每行的索引,其值小于或等于零或大于或等于t。但是,我不知道如何在该行中为该索引分配 null。

我的意图是分配空值,这样我就可以在没有这个空值部分的情况下精确绘图,并查看每一行/“场景”上的破坏效果。

任何人都可以帮助我吗?

标签: rrandom-walk

解决方案


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

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

推荐阅读